main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int *b; b=a; printf("%d",a[1][1]); printf("%d",b) }
main()
{ int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int *b;
b=a;
printf("%d",a[1][1]);
printf("%d",b[1][1]);
为什么printf("%d",a[1][1]);能运行,而且b=a也能运行,但是printf("%d",b[1][1]);就不呢不运行
}
为什么改为int (*b)[3]就可以了?下表运算符是什么?而且printf("%d",b[0][0])也不行
经过我的实验,原来a和b值是一样的,只不过他们的机制不一样,a+1则a[1]的地址,而b+1则为a[0][1]地址,所以上面的就不对了.
人气:193 ℃ 时间:2020-05-13 14:27:59
解答
把b的定义改为,int (*b)[3]就可以了 定义成这样子,说明b是一个指向一个长度为3的一维数组,也就是书上所说的行指针.意思是,b+1,就指向了a[1],一下子跳过了a[0](一共六个字节),而不是指向a[0][1];你本来把b定义成int...
推荐
- main() {int i,a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d%d%d",a[2],a[5],a[8]); }
- main( ) { int i,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i
- The news ( )exciting
- D、E、F分别是三角形ABD各边的中点,AH是三角形ABC的高,四边形DHAF是等腰梯形嘛
- that's Okay?me 填什么 A forB toC out of
- 鲁教版八年级英语上册配套练习册答案Unit5!
- A是由20个两位数组成的集合,证明存在A1,B1包含于A,A1∩B1=空集且∑X(X∈A1)=∑X(X∈B1)
- 大自然中大部分动物都是什么
猜你喜欢
- 如图所示,物体处于平衡状态,若保持a不变,当力F与水平方向夹角β多大时F有最小值( ) A.β=0 B.β=π2 C.β=α D.β=2α
- 人体呼出的氮气和吸入氮气含量有没有发生变化
- 一台座钟,它的分针长5厘米.这台座钟的分针的针端一天所走的路程是多少米?
- 滑轮组可以省力,改变用力方向,不能同时省力又省距离
- 若直线l1:y=k(x-4)与直线l2关于点(2,1)对称,则l2直线恒过点(0,2).(0,2)点怎么算的?
- 英语翻译
- 那个男孩比班上任何一个学生都高.That boy is ( )( )( )( )in the class.
- 如图:四边形ABCD为菱形,对角线AC=8,BD=6,对角线相交于点O,P是边AD上一点(P与D点可重合)