可能重複:
Question about pointers and strings in C差異指針的大小爲一個字符串,和sizeof AA串
#include<stdio.h>
int main()
{
char *str1="abcd";
char str2[]="abcd";
printf("%d %d %d\n",sizeof(str1),sizeof(str2),sizeof("abcd"));
return 0;
}
爲什麼這段代碼給出相同的答案爲sizeof(str2)
和sizeof("abcd")
甚至當str2
理想上就像一個指向字符串的指針,因爲是str1
,所以回答應該是4 4 5
代碼上Ideone: http://ideone.com/za8aV
答案:4 5 5
對不起,但這並沒有回答我的問題,爲什麼不應該與str1相同(在它的定義是一個字符串指針) –
第一個是一個指針,第二個是一個數組。一個*指針*和一個*數組*。他們是兩個完全不同的東西。這就是爲什麼他們「不應該是一樣的」。你爲什麼期望兩種完全不同的東西以相同的方式表現?你知道,要回答這樣的問題是非常困難的,因爲幾乎不可能開始理解爲什麼你會發現這種行爲很奇怪。你基本上是問「爲什麼汽車與蘋果不同」。如何回答這樣的問題? – AnT
嗯..得到它,str2 []相當於「abcd」是一個字符數組,而str1是一個指針,那麼你能否清楚疑問str2 []是什麼,它是一個指針還是一個字符串? –