陣列地址與指標之間的區別與聯絡

crazy_baoli發表於2019-01-10
#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的首地址,兩者不同。

 

相關文章