我知道 char* 和 char[] 之间的一些区别。
char x[] = "xxxx"
是一个字符数组;
char *y = "xxxx"
是指向文字(const)字符串的指针;和x[4]=='\0'
,*(y+4) == '\0'
也是。那么为什么sizeof(x)==5
和sizeof(y)==4
?
问问题
7481 次
4 回答
10
char x[] = "xxxx"
是一个大小为 5 的数组,包含 xxxx 和 \0。
char *y = "xxxx"
是一个指向字符串的指针。它的长度是 4 个字节,因为那是指针的长度,而不是字符串的长度。
于 2012-05-12T02:22:27.320 回答
4
数组类型的大小是数组占用的大小。与 相同sizeof("xxxx")
。
指针类型的大小是指针本身占用的大小。与 相同sizeof(char*)
。
于 2012-05-12T02:22:46.087 回答
4
x
是真的"xxxx\0"
。字符串末尾的 nul 终止符为数组提供了五个字节。
但是,sizeof(y)
要求指针的大小,在您的情况下恰好是四个字节。y
指向的内容sizeof()
对.
于 2012-05-12T02:23:06.513 回答
0
对于, x 是一个指针,这意味着你可以通过,等
char *x
来改变指向的位置。是一个数组,它是一个常量指针,所以你不能做 x++x++
x+=2
char x[]
于 2013-06-03T00:24:05.857 回答