看板 C_and_CPP 關於我們 聯絡資訊
#include <stdio.h> #include <stdlib.h> #include <string.h.> class car { public: int wheel; int person; char name[]; }; int main() { car truck, bus, taxi; bus.wheel=6; bus.person=40; strcpy(bus.name, "公車"); truck.wheel=8; truck.person=3; strcpy(truck.name, "卡車"); taxi.wheel=4; taxi.person=5; strcpy(taxi.name, "計程車"); printf("%s有%d個輪子,可載%d人\n", bus.name, bus.wheel, bus.person); printf("%s有%d個輪子,可載%d人\n", truck.name, truck.wheel, truck.person); printf("%s有%d個輪子,可載%d人\n", taxi.name, taxi.wheel, taxi.person); system("pause"); } 有2075488429個輪子,可載44712人 卡車有8個輪子,可載3人 計程車有4個輪子,可載5人 請按任意鍵繼續 . . . 有2075488429個輪子,可載44712人 卡車有8個輪子,可載3人 計程車有4個輪子,可載5人 請按任意鍵繼續 . . . 以上是執行結果: 紅色那行有問題 而且我按任意鍵想結束 結果不會結束 反而再跑出一個執行結果 要按cmd視窗的x才能關掉視窗 orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.161.198
Ygulu:我在想是不是又是一些蠢問題 但我找了好久 找不出來@@ 02/11 12:11
blexx:你把字串用int輸出... 02/11 12:15
lachu:字元陣列的長度沒給 給了以後就可以正常執行了 02/11 12:19
lachu:不過我也不知道為什麼... 02/11 12:19
fjm31714:本來就該給吧.... 02/11 12:22
Ygulu:可是卡車跟計程車都正常耶@@ 02/11 12:23
Ygulu:改好了 正常了 可是為什麼原本卡車跟計程車是正常的? 02/11 12:23
※ 編輯: Ygulu 來自: 118.169.161.198 (02/11 12:24)
Ygulu:字元陣列長度設1也可以@@ 02/11 12:25
ledia:設 1 還是可能會有問題的 02/11 13:20
ledia:沒問題是運氣好有 padding 02/11 13:21
ledia:計憶體個管理要小心, 公車會爛是因為被別的車碾過了 02/11 13:22
ledia:別的車空間不夠往後寫寫到公車的記憶體 02/11 13:23
pponywong:char name[] 跟 char* name 好像一樣 02/11 13:41
pponywong:所以只有sizeof(void*) 大小 02/11 13:41
pponywong:用 taxi.name = strdup("計程車"); 02/11 13:42
pponywong:class 再加一個 dtor 去 safe delete name 02/11 13:43
MOONRAKER:如果是 bus.name = "公車" 就會對了吧 02/11 14:09
MOONRAKER:不過這是不好的做法("公車"字串常數位址直接送給物件) 02/11 14:10
interpreter:我覺得你是在寫C 不是寫C++ 02/12 18:53