已声明的数组如下:
char ma[10][20];
使用以下方法获取特定元素的地址:
p = &ma[1][18];
p
后p++;
指向哪个元素?
答案 0 :(得分:2)
将1添加到数组成员的地址,获取下一个成员的地址。由于p是ma[1][18]
的地址,ma[1]
是数组p+1
的成员,ma[1][19]
是p++;
的地址。 (当然,p=p+1;
就像char*
)
编辑:我当然认为p是{{1}}。如果它是别的,答案可能是其他答案。
答案 1 :(得分:1)
p++
收益&ma[1][19]
以下是解释:
char ma[10][20];
char *p = &ma[1][18];
p
值为&ma[1][18]
,等于*(ma + 1) + 18
。
p++
等于p + 1
的{{1}}等于(*(ma + 1) + 18) + 1
等于*(ma + 1) + 19
,等于&ma[1][19]
。
答案 2 :(得分:0)
您没有指定p
的类型;假设它是char *
,那么p++
会将其推进到ma[1][19]
(1个字符)。
以下是一些变体:
char (*p)[20] = &ma[1];
在这种情况下,p
是指向char
的20个元素数组的指针,初始化为ma[1]
;执行p++
会使p
提前ma[2]
(20个字符)。
char (*p)[10][20] = &ma;
在这种情况下,p
是一个指向10个元素的20个元素char
数组的指针,初始化为ma
;执行p++
会将p
提升到紧跟ma
(200个字符)之后的下一个元素。