数组首地址和数组第一个元素的地址

#include <stdio.h>
int main()
{
    int a[2][3] = {1, 2, 3, 4, 5, 6};
    printf("       a = %d\n", a);  //x
    printf("      &a = %d\n", &a);  //x
    printf("     a+1 = %d\n", a+1);  //x+3*sizeof(int)
    printf("    &a+1 = %d\n", &a+1);  //x+2*3*sizeof(int)
    printf("    a[0] = %d\n", a[0]);  //x
    printf("    a[1] = %d\n", a[1]);  //x+3*sizeof(int)
    printf("  a[0]+1 = %d\n", a[0]+1);  //x+sizeof(int)
    printf(" a[0][0] = %d\n", a[0][0]);  //1
    return 0;
}

a表示第一行第一个元素的地址,第一个元素也是一个数组,&a是数组的地址,a,&a,a[0]三者值相同,但是有区别。a+1表示第二行第一个元素的地址,值和a[1]相同。&a+1表示数组的下一个位置的地址,a[0]+1表示第一行第二个元素地址。

posted on 2012-01-31 15:40  快跑蜗牛  阅读(1870)  评论(0编辑  收藏  举报

导航