我有一個關於如何編譯店C字符串的問題下面是一些代碼片段:編譯器如何存儲C字符串?
#define STRING_MACRO "macro"
const char * string_const = "w";
int main(void){
printf("%u\n", sizeof(STRING_MACRO));
printf("%u\n", sizeof(string_const));
return 0;
}
輸出:
4 - 我的系統是x86的,所以它是4
所以我對編譯器如何存儲C字符串感到困惑?宏樣式和值風格是一樣的嗎?
我想大多數人誤解我的問題。所以我自己嘗試了另一個代碼。
#define TEST "a"
int main(void)
{
char hello[] = "aa";
char (*a)[10] = &hello;
printf("%u\n", sizeof(TEST));
printf("%u\n", sizeof(hello));
printf("%u\n", sizeof(*a));
return 0;
}
輸出:
2
3
10
所以我得到一個結論的宏風格的編譯器C字符串中的char []類型,不是char *類型。
的多少誤解'sizeof'這是否使今天的基指針? –
字符串常量的類型爲char [N](適合於'N'),所以是的,它是一個數組,而不是一個指針。 –