引用数组元素的方法的问题


main()

{

int i;

int a[10];

int *p=a;

for(i=0;i<10:i++)

    {

    *p=i+1;

printf("a[%d]=%d\n",i,*p);

p++;

    }

}

 *p=i+1; 我理解是把i+1赋值给数组a,但不能理解作用是什么。想问这一语句大家怎么理解?作用和含义是什么?

往事不追
浏览 2098回答 6
6回答

快乐的时光

我用图示给你解答。希望能够帮到你

应龙

p指的是数组a的首地址,*p指的是a[0],p++就是数组后一个元素的地址,*p就变成a[1]依次类推。学汇编数组运用就懂深了。

凌小天3635910

main() {     int i;                //创建控制变量i     int a[10];            //创建整形数组a,大小为10     int *p=a;             //创建整形指针p,并将数组a的首地址赋值给p     for(i=0;i<10;i++)     //建立一个循环,次数为10次     {         *p=i+1;           //向p所在的地址赋值,值的大小为i+1         printf("a[%d]=%d\n",i,*p);        //输出数组标号和对应值         p++;              //让p指向下一个地址     } }                        //整个过程就是对数组a赋值1~10;。输出结果为:a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;a[5]=6;a[6]=7;a[7]=8;a[8]=9;a[9]=10;

wooviet

最后的结果也就是a[0]=1,a[1]=2……这里p是一个指向数组首地址的指针,所以*p=i+1的意思就是a[0]=i+1,要知道a就代表的是数组的首地址,也就是说数组名就是数组首地址,由于数组在内存中的空间是连续的,所以,p++就代表p这个指针依次指向数组的下一个元素,也就是说这个程序用p这个指针依次指向数组每一个元素,然后每个元素都被依次赋值为i+1。这样说请问你听懂了吗?

Yexiaomo

因为 int *p = a ;   // 等价于 int *p = &a[0];// p 指向 数组 a[10] 的 首地址 也就是 a , 也就是 a[0] 的地址*p = i +1 ; //等价于 a[0] = i +1;          (  * 号的意义 应该知道吧)p++; //因为数组的地址是连续的, 所以 p++ 使 p 指向了 数组下一个元素的地址;也就是 a[1];以此类推

黑马程序员3386844

简单的要死的东西就是判断真假小学生3小时就会
打开App,查看更多内容
随时随地看视频慕课网APP