簡體   English   中英

二維數組的C指針

[英]C Pointer for 2-dimensional Array

已經聲明的是一個數組,例如:

char ma[10][20];

使用以下命令獲取特定元素的地址:

p = &ma[1][18];

其中元件將p點到之后p++;

將1添加到數組成員的地址,獲取下一個成員的地址。 因為p是ma[1][18]的地址,它是數組ma[1]成員,所以p+1ma[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM