指向數組指針與指向整形數的指針

 

最近看書看到二維數組與指針的章節,將一個二維數組名字賦值給一個指向整形數的指針,咋看沒毛病,其實還是數組與指針的概念沒有理清楚,先放代碼。

#include <stdio.h>
int Array[1][2]={1,2};
int main(void) { 
    int *p;
    //p = Array;  兩邊的類型不一樣不能直接賦值
    if(*Array == Array[0])
    {
        printf("OK\n");
    }
    return 0;
}

首先int *p定義了一個指向整形變量的指針。

int Array[2][2]={1,2,3,4}

這個語句說明Array是一個數組,該數組擁有1個數組類型的元素,其中每個元素是一個擁有2個整形元素的數組。

Array數組名代表指向第一個元素的指針,而該元素是一個數組,立即推--->Array是一個指向數組的指針。而P是一個指向整形變量的指針,兩者類型都不一致,所以 p = Array; 是錯誤的。

下面我又做了一個變換*Array就是指向第一個數組中的第一個整形數的指針了,更容易理解了,上述代碼最終輸出OK。

 如果上述代碼不註釋則會提示:error: cannot convert ‘int [1][2]’ to ‘int*’ in assignment,就是類型不匹配。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章