往事不追
2016-08-15 20:08
以下是程序
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,但不能理解作用是什么。想问这一语句大家怎么理解?作用和含义是什么?
谢谢解答,现已弄明白了
提问: *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。
Linux C语言指针与内存
116475 学习 · 250 问题
相似问题