九千 发表于 2020-4-18 23:12:13

c语言数组指针

int a ,(*pt);
pt=a;

请问为什么*(pt+1) 是对a数组元素的非法引用,*(pt+1)不是等同于 *(a+1),也就等同于a 吗?
这样不就是a 吗?
请问一下我这样理解正确吗?

倒戈卸甲 发表于 2020-4-18 23:33:18

你的理解没毛病

4goodworld 发表于 2020-4-20 15:56:34

请问为什么*(pt+1) 是对a数组元素的非法引用
你觉得 *(pt+1)是 a
可,你确定是吗?

4goodworld 发表于 2020-4-20 16:25:48

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]
查看完整版本: c语言数组指针