码迷,mamicode.com
首页 > 编程语言 > 详细

C指针与数组

时间:2019-11-28 21:20:54      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:元素   use   main   类型   void   pause   替换   time   png   

  • 通过指针遍历数组的小把戏
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
void main()
{
    int a[10] = {1,2,3,4,5,6,7,8,9,10};
    for (int *p = a; p <= a + 9; p++)
    {
        printf("值是%d,地址是%p\n",*p,p);
    }
    getchar();
}

技术图片

 

  •  a代表指向整型数组首元素地址的指针,被称作指向整型类型的常量指针,原因见下属上机实验结果,而p相对而言就是变量指针,可以把数组a[10]的首地址a赋值给p

技术图片

 

 左值,处于赋值号左边可以被赋值的变量,实验结果是提示左值不可赋值

  • 也可以巧妙安排借助指针改变地址中存放的值
void main()
{
    int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    time_t st;
    srand((unsigned int)time(&st));
    //利用指针替换数组a
    int *p = a;
    for (int i = 0; i < 10; i++)
    {
        *p = rand()%100;//指针当前位置的元素改为以时间为种子生成的随机数
        p++;//指针向前推进,遍历到数组的下一个元素
    }
    for (int *p = a; p < a + 10;p++)
    {
        printf("当前元素是%d,地址是:%p\n",*p,p);
    }
    system("pause");
}

输出结果:

 技术图片

 

  •  也可以利用指针运算性质,不断的推进地址,达到访问地址中存放的值的效果
void main()
{
    time_t ts;//声明了一个时间
    int a[10] = {1,2,3,4,5,6,7,8,9,10};
    srand((unsigned int)time(&ts));//以时间为种子生成随机数,如果省略此行代码,则下一行代码生成的总是一个数
    printf("此刻,生成的随机数是%d\n", rand() % 100);//生成0-99----对100取余,肯定数字小于100
    int i = 0;
    int num[10];
    for (int *p = num; p < num + 10;p++)
    {
        num[i] = rand() % 100;
        i++;
    }
    int *q = num;//这里用到了num是数组首元素地址的特性q+i=&num[i]  *(q+i)=num[i]
    for (int i = 0; i < 10; i++)
    {
        printf("q[i]=%d, *(q+i)=%d\n",q[i],*(q+i));
    }
    getchar();
}

技术图片

 

C指针与数组

标签:元素   use   main   类型   void   pause   替换   time   png   

原文地址:https://www.cnblogs.com/saintdingspage/p/11953477.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!