|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
void main()
{
int *p, i, a[10];
p = a;
for(i=0; i<10; i++)
{
scanf("%d", p++);
}
printf("\n");
for(i=0; i<10; i++, p++)
{
printf("%d\n", *p);
}
}
我知道错误是因为第一个for循环将p的值增加了十次,但第一个for循环结束后p到底是个什么东西?
本帖最后由 巴巴鲁 于 2021-2-27 08:56 编辑
指针本质上是地址(我是这样理解的)
就比如,a数组的首地址是6422220,那么
a[0]的地址6422220
a[1]的6422224
a[2]的6422228
a[3]的6422232
a[4]的6422236
a[5]的6422240
a[6]的6422244
a[7]的6422248
a[8]的6422252
a[9]的6422256
所以第一个for循环完后,p的值会在a[9]地址的基础上+4,就是6422260这个地址(+4的原因就是1个int类型占4个字节)
但是6422260的内存空间没有给赋值,如果想访问,系统会自动赋一个值
|
|