C chars和char *指向一个指针

时间:2014-02-19 02:24:20

标签: c pointers

我想了解指针。当我宣布

char* buffer = malloc(10);

&buffer是一个有意义的char**并且跟随

char new_buf;

其中&new_buf是指针或char*

什么是&buffer[5]

显然你可以用%s打印出来,那么它是否会成为一个字符串?

4 个答案:

答案 0 :(得分:3)

buffer的类型为char *,因此buffer[5]等同于*(buffer + 5),其类型为char。因此&buffer[5]的类型为char *

它是否是字符串取决于它是否为空终止。例如,如果buffer指向字符串"hello,you",则&buffer[5]buffer开始后指向5个字符,即",you",即字符串。

h e l l o , y o u \0
^         ^
|         |
buffer    &buffer[5]

另一种更容易理解的方法是,buffer相当于&buffer[0],因此&buffer[5]是指向其后5个字符的指针。

答案 1 :(得分:1)

&bufferchar**

&buffer[0]char*

&buffer[5]char*

&new_bufchar*

C实际上没有字符串,只是字符数组。大多数人将char*等同于一个字符串,只要它们保持以0字符结束字符串的约定就行。

答案 2 :(得分:0)

buffer是10字节数组的第一个条目的地址。这与& buffer [0]相同。

& buffer [5]是数组第六个元素的地址,实际上与(buffer + 5)

相同

你可以调用printf(“%s”,缓冲区);或printf(“%s”,& buffer [5]);如果数组包含具有空终止字符的合适ASCII字符,则可能会做一些合理的事情。

答案 3 :(得分:0)

buffer&buffer[0]都是相同的,并指向字符数组的第一个字符。
buffer表示(buffer+0)
buffer[5]表示*(buffer+5) &buffer[5]表示(buffer+5)