20140326 二维数组 数组名取地址

1、二维数组

http://col1.blog.163.com/blog/static/1909775192012514111830946/

 

int a[2][3];


a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]

  • a相当于是二维数组的首地址,可以理解成一个数组指针(指向一个包含3个元素的数组)
  • *a和a[0]相当于是首元素的地址(*a+1要跳一个int),a相当于数组的地址(a+1要跳三个int)
  • a[1]相当于a+1表示&a[1]的地址,三者打印结果相同。
  • a[0]+1相当于&a[0][1]相当于*(a+0)+1
  • a[1]+1相当于&a[1][1]相当于*(a+1)+1
#include<stdio.h>
void main()
{
    int a[2][3]={1,2,3,4,5,6};
    printf("%d\n",a[1]);
    printf("%d\n",a+1);
    printf("%d\n",&a[1]);
    printf("%d\n",(a[0]+1));
    printf("%d\n",*a+1);
    printf("%d\n",&a[0][1]);
}

2、数组名取地址

int a[10];

&a+1增加了10个int类型的字节的长度了;a+1就是就是a[1]的地址

posted @ 2014-03-26 23:03  yexuannan  阅读(724)  评论(0)    收藏  举报