若有定义:int x[][2]= {16, 20, 30, 40, 60, 80}, p=x;
则数组元素(p+4) 的值为 ,
*p+4的值为 。
刚学指针,实在难以解决
数组是顺序表,地址是连续的
p+4就是后面第4个地址,也就是60
代码没格式化,* 号看不到,应该是
int x[][2]= {16, 20, 30, 40, 60, 80}, *p=*x;
这样p就指向了二维数组x的第一行,每行2个元素。但二维数组实际上内存是连续的,所以p+4就会指向二维数组第二行第二列,也就是60,所以输出60
而 p+4,中, * p就是x二维数组第一行的第一个元素,即16,加4后是20。 (p+4)是先移动指针,再取值,而 * p +4是先取值,再对值进行数值相加