繁体   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