本节书摘来自异步社区《指针的编程艺术(第二版)》一书中的第1章,第1.3节,作者 蔡明志,更多章节内容可以访问云栖社区“异步社区”公众号查看
指针的编程艺术(第二版)接下来讨论二维数组。如果有一个二维数组如下。
`javascriptint x3 = {10, 20, 30, 40, 50, 60};
此数组共有6个元素(3行,2列),每一个元素的地址为&x[0][0]、&x[0][1]、&x[1][0]、&x[1][1]、&x[2][0]、&x[2][1]。我们以范例address2Array-5来举例说明。 范例address2Array-5/ address2Array-5.c /
int main(){ int x3 = {10, 20, 30, 40, 50, 60}; int i, j; printf("x is %pn", x);
printf("n"); for(i=0; i<3; i++) for(j=0; j<2; j++) printf("&x%d = %pn", i, j, ξ);
printf("n"); for(i=0; i<3; i++) printf("x[%d] = %pn", i, x[i]); printf("n"); for(i=0; i<3; i++) printf("x+%d = %pn", i, x+i);
printf("n"); for(i=0; i<3; i++) for(j=0; j<2; j++) printf("x%d = %dn", i, j, xi); getch(); return 0;}
输出结果 <div style="text-align: center"> <img src="https://yqfile.alicdn.com/63151bedb75a1be85b8cef41f8c6e1920d55e6a3.png" > </div> 从输出结果得知x[0] 等于&x[0][0],x[1]等于&x[1][0],x[2]等于&x[2][0]。由于此数组的名称是x,所以x等于&x[0][0],x+1等于&x[1][0],x+2等于&x[2][0],以图表示如下。 <div style="text-align: center"> <img src="https://yqfile.alicdn.com/f4c218acf0a7a2637db8bfca07e867617d0818ca.png" > </div> 虽然x[0]和x皆表示&x[0][0],如果两者加1,结果是否一样呢?请参阅范例address2Array-10。 范例address2Array-10/ address2Array-10.c /
int main(){ int x[][3] = {10, 20, 30, 40, 50, 60}; int i, j;
printf("x = %#x, &x0 = %#xn", x, &x0);
printf("n"); for(i=0; i<2; i++) printf("x[%d] is %#xn", i, x[i]);
printf("n"); for(j=0; j<6; j++) printf("x[0]+%d is %#xn", j, x[0]+j); printf("n"); for(j=0; j<3; j++) printf("x[1]+%d is %#xn", j, x[1]+j);
printf("n"); for(i=0; i<2; i++) printf("x+%d is %#xn", i, x+i); getch(); return 0;}
输出结果 <div style="text-align: center"> <img src="https://yqfile.alicdn.com/dcf45782b962173fc5792f843ed33291761ca787.png" > </div> 相关资源:Visual C 开发实战1200例(第1卷).(清华出版.刘锐宁.梁水.李伟明).part1