看板 C_and_CPP 關於我們 聯絡資訊
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 怎麼算出char *keytab[]的大小 題目原文: char *keytab[]={"break","case","char","continue","default","for","if","int"}; char **p=keytab; please use sizeof operator to decide the number of element of keytab array and define it as NKEYS. 希望得到的正確結果: 36 因為我想說 break case char continue default for if int 這些字元一共有36個 所以我猜答案是36 程式跑出來的錯誤結果: 32 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ Windows 有問題的code: (請善用置底文標色功能) #include <iostream>//III using namespace std; int main() { char *keytab[]={"break","case","char","continue","default","for","if","int"}; char **p=keytab; for (int i=0; i<8 ;i++) { cout<<keytab[i]<<endl; } int NKEYS; NKEYS = sizeof(keytab)/sizeof(char); cout<<NKEYS; cout<<sizeof(keytab); //32 system("pause"); return 0; } 補充說明: 我知道 sizeof(keytab); 是算出8個指標 8X4=32的意思 請問要怎麼用sizeof 去算出 一共使用了36個字元呢???? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.39.115
fragileness:你需要的是strlen吧 05/02 18:10
pico2k:36也是錯的 05/02 18:12
nana0130:可是老師考卷問的是用sizeof去算element of array 05/02 18:21
nana0130:我沒有什麼idea 05/02 18:21
LPH66:你再仔細看清楚老師要問什麼.... 05/02 18:38
fragileness:老師給你的element of array答案是36嗎 05/02 18:39
aecho:sizeof(keytab) / sizeof(char *) 05/02 20:34
aecho:咦?我會錯義了…我比較喜歡上面的錯誤答案 @__@"" 05/02 20:35
charleshu:strlen才是算字元數的,可以用迴圈累計所有字串. 05/02 21:11
avhacker:_countof (vc 上可用) 05/03 13:18
nana0130:沒有答案,我想應該是36吧 ~ 05/03 13:31
james732:請問你為什麼會覺得是36呢?說說你的道理吧 05/03 13:34
nana0130:等一下我把題目打出來 05/03 13:35
※ 編輯: nana0130 來自: 140.116.39.115 (05/03 13:38)
nana0130:我把我的想法,修改在文章內容了>"< 05/03 13:43
nana0130:不曉得是我老闆出錯,還是真的可以用sizeof算???? 05/03 13:43
james732:number of element of keytab => 應該是問有幾個字串? 05/03 13:44
james732:我支持 sizeof(keytab) / sizeof(char *) 這個答案 05/03 13:46
nana0130:是問字串喔???喔~~MY GOD 05/03 13:49
nana0130:我還有一題也不懂....我想貼出來問一下 05/03 13:51
james732:其實對於題意不清楚 最好的方法還是問老師吧 05/03 14:06
nana0130:嗯嗯,我覺得很迷惘~~QQ 好的我去問老師比較快 謝謝大家 05/03 14:22