c语言数组指针
int a ,(*pt);pt=a;
请问为什么*(pt+1) 是对a数组元素的非法引用,*(pt+1)不是等同于 *(a+1),也就等同于a 吗?
这样不就是a 吗?
请问一下我这样理解正确吗? 你的理解没毛病 请问为什么*(pt+1) 是对a数组元素的非法引用
你觉得 *(pt+1)是 a
可,你确定是吗?
int test()
{
int a={
{ 1,2,3},
{ 4,5,6}
};
int (*p);
p=a;
int b=sizeof(*(p+1));//看看 *(p+1) 的单位长度
printf("%d\n",b);
*(p+1)=222; // 其实 *(p+1) 从内存角度来理解是 就是从*(p+1) 所返回的地址开始,偏移 sizeof(*(p+1))个单位长度 *2
printf("%d %d %d",a,*(p+1),*((int*)((int)*(p+1)+b*2)));
return 0;
}
这是我做的测试,
如此推算,其实*(p+1) 是 a 的概念了,
页:
[1]