C中变量声明中*
和[]
之间有什么区别?
我认为它们是相同的但是这段代码编译:
int values[] = {1, 2 ,3};
这一个int values* = {1, 2, 3};
导致解析错误。 (expected one of "="...
)
答案 0 :(得分:1)
它们在某些方面是相同的,但它们并不相同。
首先,你展示了初始化。指针基本上是一个变量,其值为内存地址。因此,您无法使用此类int values* = {1, 2, 3};
其次,当您使用[5]访问某个数组时,会将其转换为内存地址的取消引用:*(a + 5)。此外,数组的名称是指向第一个元素的指针。
当然,还有很多事情要说。我试图让你一瞥正在发生的事情,但我建议你读一本C书。
总而言之,[]只是一个允许我们使用数组而不必使用复杂指针算法的运算符。它的功能可以用指针替换,但是语法和实际操作的方式是非常不同的,而且在大多数情况下,没有必要。