[問題] array of pointer

看板C_and_CPP作者 (惑)時間14年前 (2011/09/12 22:50), 編輯推噓2(2011)
留言13則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC 問題(Question): 宣告一個全班同學姓名的二維陣列 char name[50][20]; // 全班最多50個人,每個人的名字長度不超過20個字元 但倘若不確定全班共有幾位同學,故第一維以動態allocate的方式, 請問宣告應是下列何者呢 char *name[20]; char (*name)[20]; name = malloc(student_num * sizeof(char) * 20); 就我的理解第一種是 array of pointer to char 第二種是 a pointer to an array of char 我覺得第一種是宣告 有20個element的array,而每個element是pointer to char 第二種是宣告 指向一個佔20個字元的array 所以直覺應該是用第二種,但是網路上查到的範例卻是用第一種 請問是我哪裡理解錯誤了呢 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.218.68.233

09/12 23:05, , 1F
你的才是對的
09/12 23:05, 1F

09/12 23:15, , 2F
原po的第一維的觀念好像很奇怪? student_num是第二維?
09/12 23:15, 2F

09/12 23:28, , 3F
我的觀念是student_num是第一維, 名字長度是第二維
09/12 23:28, 3F

09/13 10:18, , 4F
char (*name)[20];<--蠻確定這宣告沒問題
09/13 10:18, 4F

09/13 10:19, , 5F
但是你的空間配置那邊,20就不用再給了吧!
09/13 10:19, 5F

09/13 10:28, , 6F
要先分配你要的1維,然後再把每一個各指向一個你所需
09/13 10:28, 6F

09/13 10:28, , 7F
的大小,當作第二個維度
09/13 10:28, 7F

09/13 10:34, , 8F
如果你要的是每一個都固定的話,可以直接分配
09/13 10:34, 8F

09/13 10:34, , 9F
一維,模仿成二維這樣會比較方便一點
09/13 10:34, 9F

09/13 10:35, , 10F
這是一點小小的建議
09/13 10:35, 10F

09/13 11:19, , 11F
kiss原則
09/13 11:19, 11F

09/13 18:51, , 12F
我一直都覺得追求簡單這件事,本身就不簡單
09/13 18:51, 12F

09/13 18:52, , 13F
不先正確評估出每個複雜方案的成效前,哪知道該選哪個
09/13 18:52, 13F
文章代碼(AID): #1ERXmlz8 (C_and_CPP)