[英]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.