[問題] 如何知道二維array終點

看板C_and_CPP (C/C++)作者 (匡)時間14年前 (2012/05/03 17:26), 編輯推噓0(009)
留言9則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 小弟功力不深,有個問題想請問大大們 我用*parameter_array[]的方式來宣告一個字元陣列,並且給定初始值(給了很多字串) 由於我不知道這些字串總共有幾個 我想用個for loop去讀他,但是我遇到我不知道該怎麼設for loop的終止條件 我用下面for loop寫的終止條件,但看起來parameter_array指標陣列的最後一個不是'\0' 不知道各位大大有沒有辦法告訴我為什麼呢? 程式碼(Code):(請善用置底文網頁, 記得排版) char *parameter_array[]={ "Apple", ... ... ... "Lion" }; int i; for(i=0;parameter_array[i]!='\0';i++) {printf("%s\n", parameter_array[i]);} -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.251.53.16

05/03 17:58, , 1F
parameter_array[]是一個連續的記憶體位置陣列唷!
05/03 17:58, 1F

05/03 18:00, , 2F
所以應該是 sizeof(parameter_array)/4;
05/03 18:00, 2F

05/03 18:00, , 3F
有錯樓下補刀
05/03 18:00, 3F

05/03 18:15, , 4F
sizeof(parameter_array)/sizeof(parameter_array[0]);
05/03 18:15, 4F

05/03 18:16, , 5F
樓上出現的4, 實質上指的是 sizeof(char *) = 4
05/03 18:16, 5F

05/04 01:18, , 6F
一般是在"Lion"後加一個空字串 "", 然後for loop終端
05/04 01:18, 6F

05/04 01:18, , 7F
條件用 strlen(parameter_array[i])
05/04 01:18, 7F

05/04 05:42, , 8F
傳參的時候會退化,所以最好還是加NULL在最後
05/04 05:42, 8F

05/04 10:12, , 9F
謝謝各為大家的指導...哈我都沒想到可以先算長度
05/04 10:12, 9F
文章代碼(AID): #1FeaykI7 (C_and_CPP)
文章代碼(AID): #1FeaykI7 (C_and_CPP)