二级C中指针问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 00:02:00
阅读下列程序,执行结果为?
#include"stdio.h"
main()
{ int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};
printf("%x,%x\n",c[2][2],*(*(c+1)+1));}
这个*(*(c+1)+1)是什么意思?

*(*(c+1)+1)

楼主我们换个通用的写法
*(*(c+i)+j)
这个表示的是第i+1行,第j+1列的指向所指向的值

代到这时我们来看就知道了
是第2行第2列的值。
%x是按十六进制输出

c〔2〕〔2〕=62
*(*(c+1)+1)=c〔1〕〔1〕=6
所以结果就成了
3E 6

楼主您好
c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};
按照没4个数一组自动分为4*4的二维数组
也就是
{1,2,3,4,
5,6,7,34,
213,56,62,3,
23,12,34,56};

c[2][2]自然指向62
*(*(c+1)+1))也就是c[1][1]指向6

由于您的输出是按16进制的 所以输出结果是

3E,6