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