首頁>Club>
那陣列為什麼還可以做形參接受地址呢我在書上看到變數名也是地址那他帶表他開闢單元的地址那為什麼還要加&呢?
7
回覆列表
  • 1 # alantop

    int a[10];

    a ,&a和&a[0]三個值是相等的。

    a叫做陣列名,是陣列首元素的地址,也就是&a[0]的值。

    &a是一個數組指標。是陣列的地址。

    切記:&a不是指向指標的指標,因為&a和a的值相等,但是*&a和*a的值不相等。*&a和a的值一樣,說明*&a僅僅是對這個陣列指標進行了取值,取得的是陣列的值,即陣列首元素的地址,而不是對&a這個地址進行了取值。這個是c語言中針對陣列指標運算的規定。 這裡的陣列指標&a取值之後,變成了a,是a,不是*a,變成了這個陣列的陣列名,或者說是陣列首元素的地址。

    驗證程式碼如下:

    #include<stdio.h>

    int main()

    {

    int a[5]={1,2,3,4,5};

    printf("a=%x\n",a);

    printf("&a=%x\n",&a);

    printf("*(int*)&a=%x\n",(*((int *)(&a))));

    printf("*&a=%x\n",(*(*(&a))));

    printf("&a[0]=%x\n",&a[0]);

    printf("*&a[0]=%x\n",*(&a[0]));

    return 0;

    }

  • 中秋節和大豐收的關聯?
  • 手遊版的《跑跑卡丁車》怎麼樣?