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]地址,所以上面的就不对了.
人气:406 ℃ 时间: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
- 英语 明天要交!(14 15:12:14)
- 带着(这里填一个词)出发 半命题作文 今天就要
- X表示一个两位数,Y表示一个三位数,如果把X放在Y的左边,且中间夹一个数字5,组成一个六位数是()
- “没有太阳,就没有我们这个美丽可爱的世界”的理解
- 小石潭记和小石城山记写水角度的异同
- 求初三化学的溶液配制问题
猜你喜欢