char buffer[]="foobar";
我知道缓冲区是指向第一个元素的char *指针,所以buffer ==& buffer [0]但是 为什么& buffer == buffer? & buffer应该给出缓冲区char *的内存地址 而不是第一个元素的地址?
另外,当我做(int)缓冲区时会发生什么?
答案 0 :(得分:1)
buffer是第一个元素的地址,而& buffer实际上是数组本身的地址。该数组将直接存储在堆栈中。这就是& buffer == buffer的原因。
它不是指针而是数组。如果您已将其声明为char *,则它不会是& buffer == buffer
答案 1 :(得分:0)
这样想。
buffer
是数组第一个元素的地址。所以它是整数的地址。
&buffer
是数组的地址。因此&buffer
实际上与buffer
相同,但他们的行为会有所不同。
例如如果你做buffer+1
,它将增加int的大小,但&buffer+1
将增加数组的大小,即一个元素的大小*元素的数量。
编辑。最初我写了buffer++
而不是buffer+1
。请参阅评论部分,了解我编辑它的原因。