typedef struct _Teacher{
char name[20];
int age;
}Teacher;
void main(){
Teacher t1;
t1.age=20;
t1.name="abc";//報錯為什麼?
char name[20]="abc";//不報錯
}
求大牛給個詳細的解釋,對於abc C++編譯器是如何處理的?是分配內存放在全局區,還是當做字面值
首先,其實你是忘記了C++的基礎問題,C++裡面只要涉及char都不能直接通過“=”來賦值,因為C++裡面沒有提供這個功能。必須使用str開頭的函數。
只有後來的CString重載來“-,+,=”之後才可以怎麼方便的使用。CString str;str=“sasa";.
其次,t1.name="abc";//報錯為什麼?name[20]是一個20大小的內存空間,而”abc“是一個常量匿名字符串的地址,現在你應該明白了.
你把一個地址賦值給了數組,也就是說現在char[20]="0x51825182"之類的,get it !
最後,oyljerry 說的數組聲明時候的初始化 應該被采納!