簡體   English   中英

char * x和char x []之間sizeof的差異

[英]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)==5sizeof(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM