数组地址与指针之间的区别与联系

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012247418/article/details/86253223
#include <stdio.h>

void main()
{

    char a[2][3];
    char *b;
    char c[5];

    b=c;

    printf("addr of arr:\n%p\n%p\n%p\n%p\n%p\n%p\n%p\n%p\n%p\n%p\n"
            ,a,a+1,&a,&a+1,a[0],a[0]+1,&a[0],&a[0]+1,&a[0][0],&a[0][0]+1);
    printf("addr of ptr:\n%p\n%p\n%p\n%p\n%p\n",c,&c,&c[0],b,&b);

}

运行结果:

分析:

1)a、&a、a[0]、&a[0]、&a[0][0]都代表2维数组a[2][3]的首地址,但是地址加1的步长有区别。

2)b是指针变量,&b是指存放指针的地址!!b是指向数组c的首地址,两者不同。

猜你喜欢

转载自blog.csdn.net/u012247418/article/details/86253223