竟无语凝噎 发表于 2018-8-2 15:40:04

数组指针

本帖最后由 竟无语凝噎 于 2018-8-2 16:08 编辑

关于数组指针的一点疑问。
按照小甲鱼带你学C带你飞第23集讲述
我的理解是数组指针是一个数组整体的指针
那么这个数组整体的指针前有取值符号,那么应该是这个数组的整体取值。
但是按照图中的很明显不是这个意思。
请问应该怎么理解这块?

claws0n 发表于 2018-8-2 16:08:38

int a = 5;
int *p = &a;

int array = {1,2,3,4,5};
int *p = array; 或 int *p = &array;这两者一样意思
p 是一个指针

int temp = {1,2,3,4,5};
int (*p2) = &temp;
(*p2) 是一个指针,(*p2) 是一个数组,存储指针的数组。

但是后面 printf 当中 *(*p2 + i)
p2也就是 &temp + 0, 再解引用,就是 temp == 1

竟无语凝噎 发表于 2018-8-2 16:17:43

为什么在这里(*p2)是指针   而前面p2是指针?

claws0n 发表于 2018-8-2 16:18:49

竟无语凝噎 发表于 2018-8-2 16:15


不好意思,上面的是多写的,看下面的解释就好

竟无语凝噎 发表于 2018-8-2 16:20:16

claws0n 发表于 2018-8-2 16:18
不好意思,上面的是多写的,看下面的解释就好

其实还是那个问题为什么在这里(*p2)是指针    而不是p2是指针

claws0n 发表于 2018-8-2 16:29:17

竟无语凝噎 发表于 2018-8-2 16:20
其实还是那个问题为什么在这里(*p2)是指针    而不是p2是指针

我多写给你看,是为了要你看到它们的相似度。应该是说如果单纯 int *p2 = &a,那么 p2 是指针

int temp 跟 int (*p2) 是不是长得很像?所以说(*p2)事实上是一个数组,但是不一样的地方是多了星号 * 。此时,*p2 就必须是指针,指向 &temp。

这个我建议你往视频后面再看一两集吧,就会更清楚了

竟无语凝噎 发表于 2018-8-2 16:46:40

claws0n 发表于 2018-8-2 16:29
我多写给你看,是为了要你看到它们的相似度。应该是说如果单纯 int *p2 = &a,那么 p2 是指针

int tem ...

十分感谢您的回复

claws0n 发表于 2018-8-2 16:53:15

竟无语凝噎 发表于 2018-8-2 16:46
十分感谢您的回复

不客气,交流交流,学习学习~
页: [1]
查看完整版本: 数组指针