*和[]之间的区别

时间:2013-11-18 11:20:50

标签: c

C中变量声明中*[]之间有什么区别?

我认为它们是相同的但是这段代码编译: int values[] = {1, 2 ,3};
这一个int values* = {1, 2, 3};导致解析错误。 (expected one of "="...

1 个答案:

答案 0 :(得分:1)

它们在某些方面是相同的,但它们并不相同。 首先,你展示了初始化。指针基本上是一个变量,其值为内存地址。因此,您无法使用此类int values* = {1, 2, 3};

之类的初始值设定项

其次,当您使用[5]访问某个数组时,会将其转换为内存地址的取消引用:*(a + 5)。此外,数组的名称是指向第一个元素的指针。

当然,还有很多事情要说。我试图让你一瞥正在发生的事情,但我建议你读一本C书。

总而言之,[]只是一个允许我们使用数组而不必使用复杂指针算法的运算符。它的功能可以用指针替换,但是语法和实际操作的方式是非常不同的,而且在大多数情况下,没有必要。

相关问题