內存分配假設下面的代碼:C結構,指針和領域
struct c {
char* name;
};
int main(int argc, char *argv[]) {
struct c c1;
c1.name = "Ana";
printf ("%s\n",c1.name);
return 0;
}
我的第一反應會一直認爲我需要撥出一些空間,無論是在堆上,或通過顯式char name[] = "Anna"
,但我上面的例子工作。編譯器只是將該字符串存儲在數據段中並指向它?換句話說,是這樣做的嗎?
struct c {
char* name = "Ana";
};
謝謝。
+1實際回答問題 –
好吧,我想我明白了。澄清這一點的是你的「靜態存儲時間」,這意味着它實際上在編譯時在數據段中,然後編譯器明確地知道在哪裏指向。謝謝。 –