有定义: int a[3][3]={1,2,3,4,5,6,8,9,10},则printf("%d",*(*(a+1)+2))语句的输出结果为6这是为什么

*(a+1)不是=a[1][0]=2吗? 2+2=4 但是外面有个“ * ”不是很懂,而且怎么算出来6的,求高手

a是二维数组,则a表示的是指针的指针,
*(a+1)表示的是a[1][0]的地址,
*(*(a+1)+2)表示的是在a[1][0]的地址加2,
再取这个地址上的值也就是6了
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-12
答案A.
数组定义是a[0]=1,a[1]=2,a[2]=3, ...,a[9]=10
A. p += 2使p指向a[2], *(p++)表示先取*p的值, 然后p增加1(指向a[3]), 所以取得的值是a[2]=3
B. p += 2使p指向a[2], *++p表示先p增加1(指向a[3]),然后取*p的值,所以是a[3]=4
C. p += 3使p指向a[3], *p++表示先取*p的值, 然后p增加1(指向a[4]), 所以取得的值是a[3]=4
D. p += 2使p指向a[2], ++*p对*p的值增加1, 所以取得的值是a[2]=a[2]+1=4

还有一种写法是(*p)++, 表示先取*p的值, 这个值再增加1
请采纳答案,支持我一下。追问

你回答的什么啊,你知道这是为什么吗为什么是6

本回答被提问者采纳
相似回答