[英]C Pointer for 2-dimensional Array
已經聲明的是一個數組,例如:
char ma[10][20];
使用以下命令獲取特定元素的地址:
p = &ma[1][18];
其中元件將p
點到之后p++;
?
將1添加到數組成員的地址,獲取下一個成員的地址。 因為p是ma[1][18]
的地址,它是數組ma[1]
成員,所以p+1
是ma[1][19]
的地址。 (當然, p++;
就像p=p+1;
)
編輯:我當然認為p是char*
。 如果還有其他問題,答案可以是其他。
p++
產生&ma[1][19]
這里是解釋:
char ma[10][20];
char *p = &ma[1][18];
p
值為&ma[1][18]
,等於*(ma + 1) + 18
。
因此,等於p + 1
p++
值等於(*(ma + 1) + 18) + 1
等於*(ma + 1) + 19
,等於&ma[1][19]
。
您沒有指定p
的類型; 假設它是char *
,那么p++
會將其前進到ma[1][19]
(1 char)。
這里有一些變化:
char (*p)[20] = &ma[1];
在這種情況下, p
是指向20個元素的char
數組的指針,該數組初始化為指向ma[1]
; 執行p++
將使p
指向ma[2]
(20個字符)。
char (*p)[10][20] = &ma;
在這種情況下, p
是指向由20個元素組成的char
數組的10個元素數組的指針,該數組初始化為指向ma
; 執行p++
會將p
前進到緊隨ma
(200個字符)的下一個元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.