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]地址,所以上面的就不对了.
人气:290 ℃ 时间: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 Next Episode是哪个里面的插曲?
- 声速是340m/s,那么换算为()km/s?
- 我要一个自编的寓言小故事,(字不要太多,200字左右)
- 五福娃的英文怎么念?(单词+音标)
- 1*2 2*3 3*4 ...n*(n 1)的求和公式是什么
- Thanksgiving Day is on the fourth Thursday in November.It's a day when people give thanks for the
猜你喜欢