char * x和char x []之间sizeof的差异

时间:2012-05-12 02:19:13

标签: c char sizeof

我知道char *和char []之间的一些区别。 char x[] = "xxxx" 是一系列的字符; char *y = "xxxx" 是一个指向文字(const)字符串的指针; 还有x[4]=='\0'*(y+4) == '\0'。 那么为什么sizeof(x)==5sizeof(y)==4

4 个答案:

答案 0 :(得分:9)

char x[] = "xxxx"是一个大小为5的数组,包含x x x x和\ 0。

char *y = "xxxx"是指向字符串的指针。它的长度是4个字节,因为这是指针的长度,而不是字符串。

答案 1 :(得分:4)

数组类型的大小是数组占用的大小。与sizeof("xxxx")相同。

指针类型的大小是指针本身占用的大小。与sizeof(char*)相同。

答案 2 :(得分:4)

x真的是"xxxx\0"。字符串末尾的nul终结符给出了五个字节的数组。

但是,sizeof(y)要求指针的大小,在你的情况下恰好是四个字节。 y指向的内容与sizeof()无关。

答案 3 :(得分:0)

对于char *x,x是指针,这意味着您可以通过x++x+=2等更改指向位置。 char x[]是一个数组,它是一个常量指针,所以你不能做x ++