gpt4 book ai didi

c - int (*ptr)[4] 的真正含义是什么,它与 *ptr 有何不同?

转载 作者:行者123 更新时间:2023-12-03 20:05:58 25 4
gpt4 key购买 nike

int (*p)[4] , *ptr;
int a[4] = {10,20,30,40};
printf("%p\n%p\n%p",&a,a,&a[0]);
p = &a ;
//p=a; gives error

//ptr = &a; gives error
ptr = a;

输出:
0x7ffd69f14710
0x7ffd69f14710
0x7ffd69f14710

我试图了解什么 a , &a , 和 &a[0]返回及其起始变量的内存地址。那么,为什么我会在其中一些作业中出错?

我的意思是,如果 p = &a = 0x7ff...有效,为什么不 p = a = 0x7ff.. ?

如果可能的话,任何人都可以通过框图让我理解这个 p 和 ptr 实际指向的位置。或者他们只是指向相同。但它们是不同的东西,我肯定知道。

最佳答案

想象一下,指针是激光指针,具有不同的颜色(红色表示指向 int 的指针,绿色表示指向数组的指针,...),变量是您可以指向的东西 使用正确的激光笔 ,即,您不能使用绿色激光笔指向 char 变量。

好的,你有 int a[4]一个数组(4 个整数)。使用绿色指针指向它:int (*green)[4] = &a; ...你还有一个 int ( a[0] ),你可以用红色指针指向它: int *red = &a[0]; /* in most contexts 'a' by itself is converted to "address of first element": &a[0] is the same as a */ .

现在问你的色盲 friend 指针指向哪里:)
就你的 friend 而言,他们是平等的,指向同一个“地方”……但你欺骗了你的 friend !编译器是色盲,不喜欢被欺骗。

关于c - int (*ptr)[4] 的真正含义是什么,它与 *ptr 有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62209942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com