[英]Difference of sizeof between char* x and char x[]
我知道char *和char []之間的一些區別。 char x[] = "xxxx"
是一個字符數組; char *y = "xxxx"
是指向文字(const)字符串的指針; 並且x[4]=='\\0'
和*(y+4) == '\\0'
。 那么為什么sizeof(x)==5
和sizeof(y)==4
?
char x[] = "xxxx"
是一個大小為5的數組,包含xxxx和\\ 0。
char *y = "xxxx"
是指向字符串的指針。 它的長度是4個字節,因為這是指針的長度,而不是字符串。
數組類型的大小是數組占用的大小。 與sizeof("xxxx")
。
指針類型的大小是指針本身占用的大小。 與sizeof(char*)
。
x
實際上是"xxxx\\0"
。 字符串末尾的nul終止符給出了五個字節的數組。
但是, sizeof(y)
要求指針的大小,在你的情況下恰好是四個字節。 y
指向的是sizeof()
沒有任何影響。
對於char *x
,x是一個指針,這意味着你可以用x++
, x+=2
等改變指向的位置char x[]
是一個數組,它是一個常量指針,所以你不能做x ++
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.