[問題] 宣告 char (*p)[10] 使用時機

看板C_and_CPP作者 (nikeasyanzi)時間10年前 (2013/10/16 09:22), 編輯推噓3(3019)
留言22則, 8人參與, 最新討論串1/1
想請教一下 版上各位先進 char (*ptr)[10] 是 p is a pointer to array 10 of char char p[10] 是 p is a array 10 of char 如果單純想要使用陣列 就用char p[10]就好 如果想要有個pointer 去指向陣列p 就單純宣告char *ptr=p就好 那char (*ptr)[10] 這種的使用時機為何?? 懇請賜教 感謝! -- CyberPanel 5000CP 換 NT.500 http://myurl.com.tw/05bd EmailCash 5000e 換 NT.500 http://myurl.com.tw/rgdq -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.207.113 ※ 編輯: nikeasyanzi 來自: 111.251.207.113 (10/16 09:22)

10/16 10:14, , 1F
因為array不是pointer,只是可以轉成pointer
10/16 10:14, 1F

10/16 10:16, , 2F
一轉成pointer就放棄了大小之類的資訊
10/16 10:16, 2F

10/16 10:17, , 3F

10/16 10:36, , 4F
二維陣列
10/16 10:36, 4F

10/16 10:37, , 5F
char matrixA = [10][10];
10/16 10:37, 5F

10/16 10:37, , 6F
char matrixB = [20][10];
10/16 10:37, 6F

10/16 10:37, , 7F
char (*ptr)[10];
10/16 10:37, 7F

10/16 10:37, , 8F
ptr = matrixA; /* or ptr = matrixB */
10/16 10:37, 8F

10/16 11:40, , 9F
指標陣列, 如果你有多個指標的需求的話...
10/16 11:40, 9F

10/16 13:09, , 10F
假設char*你用來存C style string, char (*p)[10]相當於
10/16 13:09, 10F

10/16 13:09, , 11F
是宣告一個10個c style string的array
10/16 13:09, 11F

10/16 17:01, , 12F
char (*p)[10] 應該是指向陣列的指標, 不是指標陣列
10/16 17:01, 12F

10/16 17:12, , 13F
此外 char p[10]; char *ptr = p; 的 ptr 是指向元素而非陣列
10/16 17:12, 13F

10/17 06:45, , 14F
奇怪,為什麼沒人從 malloc 角度切入?這差很多耶!
10/17 06:45, 14F

10/17 06:46, , 15F
typedef char (*name_string)[10] ;
10/17 06:46, 15F

10/17 06:46, , 16F
malloc (sizeof(*name_string)); 大概類似這樣吧
10/17 06:46, 16F

10/17 13:35, , 17F
指標陣列吧? P是一個陣列,每個元素是一個(char *)
10/17 13:35, 17F

10/17 13:47, , 18F
那 char *p[10] 是什麼 ?
10/17 13:47, 18F

10/17 14:00, , 19F
所以我會用typdef char c10[10]; c10 *p;
10/17 14:00, 19F

10/17 14:01, , 20F
人腦要處理declarator實在太麻煩了
10/17 14:01, 20F

10/17 23:22, , 21F
是我看錯 SORRY~
10/17 23:22, 21F

11/24 17:46, , 22F
時機在於你需要確認該array的大小,單純的指標無法得到size
11/24 17:46, 22F
文章代碼(AID): #1INUe_Q- (C_and_CPP)