作者Ygulu (咕嚕)
看板C_and_CPP
標題[問題] C++的問題
時間Wed Feb 11 12:10:42 2009
#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
1F:→ Ygulu:我在想是不是又是一些蠢問題 但我找了好久 找不出來@@ 02/11 12:11
2F:→ blexx:你把字串用int輸出... 02/11 12:15
3F:推 lachu:字元陣列的長度沒給 給了以後就可以正常執行了 02/11 12:19
4F:→ lachu:不過我也不知道為什麼... 02/11 12:19
5F:→ fjm31714:本來就該給吧.... 02/11 12:22
6F:→ Ygulu:可是卡車跟計程車都正常耶@@ 02/11 12:23
7F:→ Ygulu:改好了 正常了 可是為什麼原本卡車跟計程車是正常的? 02/11 12:23
※ 編輯: Ygulu 來自: 118.169.161.198 (02/11 12:24)
8F:→ Ygulu:字元陣列長度設1也可以@@ 02/11 12:25
9F:推 ledia:設 1 還是可能會有問題的 02/11 13:20
10F:→ ledia:沒問題是運氣好有 padding 02/11 13:21
11F:→ ledia:計憶體個管理要小心, 公車會爛是因為被別的車碾過了 02/11 13:22
12F:→ ledia:別的車空間不夠往後寫寫到公車的記憶體 02/11 13:23
13F:→ pponywong:char name[] 跟 char* name 好像一樣 02/11 13:41
14F:→ pponywong:所以只有sizeof(void*) 大小 02/11 13:41
15F:→ pponywong:用 taxi.name = strdup("計程車"); 02/11 13:42
16F:→ pponywong:class 再加一個 dtor 去 safe delete name 02/11 13:43
17F:→ MOONRAKER:如果是 bus.name = "公車" 就會對了吧 02/11 14:09
18F:→ MOONRAKER:不過這是不好的做法("公車"字串常數位址直接送給物件) 02/11 14:10
19F:推 interpreter:我覺得你是在寫C 不是寫C++ 02/12 18:53