【发布时间】:2013-10-01 20:52:38
【问题描述】:
我想知道两者之间有什么区别
char* str[NUM];
char str[NUM];
char* str;
我的理解是,像中间那个这样的数组定义指向第一个值的地址,即str[0]。但我也看到了第一行代码所表示的符号,即指向数组的指针。这三个是等价的吗?我知道数组定义在堆栈中为NUM 字符设置了空间,所以这可能比仅仅更好
char* str?
谢谢
【问题讨论】:
-
天空不是用砖砌成的。第一行不是指向数组的指针。
-
@KerrekSB 我希望听到一些更有用的东西,它实际上在说什么,一个指向 char 类型的指针数组,但我在其他地方找到了。我感到困惑的是,指针可以指向数组的内存地址,因此使用与初始化时相同的操作。
-
这是有道理的:“正如 Wayne Throop 所说,它是`指针算术和数组索引 [that] 在 C 中是等价的,指针和数组是不同的。')”
-
@alvarezcl:这是因为对象由 pair(类型、地址)标识。两个不同的对象可以具有相同的地址,只要它们具有不同的类型,数组和数组的第一个元素就是这种情况。