关于数组的指针问题2

来源:6-3 一般指针,数组指针和指针数组

饿少

2021-05-17

int c[] = {1, 2, 3, 4};
int (*p)[4];
p = &c;
cout << *p << endl;

我的理解:
因为p是指向数组c的指针,c的地址又是c[0]的地址,那么*p就应该是c[0]

实际运行:
*p 不是 c[0]的值,而是地址

不能理解

写回答

1回答

quickzhao

2021-05-18

使用cout << (*p)[0] << endl;可以输出c[0];  int (*p)[4]是一个数组的指针,它一般对应二级数组,维度比一维数组要高一级;所以需要你先(*p),然后再引用一个维度。如果不是特别需要用C语言来实现这个,还是建议使用C++的数组,C语言的数组和指针混用很容易让人迷惑。


0
1
饿少
非常感谢!
2021-05-18
共1条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程