问答详情
源自:5-1 数组申明的内存排列

引用一个数组元素的方法

以下是程序

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,但不能理解作用是什么。想问这一语句大家怎么理解?作用和含义是什么?

提问者:往事不追 2016-08-15 20:08

个回答

  • 往事不追
    2016-08-19 15:31:44

    谢谢解答,现已弄明白了

  • spiritwyc
    2016-08-16 16:42:05

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

    回答:

    首先理解符号的意思,*p有一层隐喻含义,暗示p的类型并不是普通变量,而是“内存地址”类型(内存地址类型的存储在32位机器中占4个字节,64位机器占8个字节),所以p是地址(比如0x7fffffffdde0),而*p代表到0x7fffffffdde0这个内存地址去取这个地址上存的值。

    现在把i+1(假设i=4,那么i+1=5)的值5,保存到地址p(0x7fffffffdde0)上,也就意味着以后去p这个地址读取变量值得话,就会读到5。