當前位置:才華齋>計算機>C語言>

C語言中指標與陣列的區別

C語言 閱讀(8.71K)

通俗理解陣列指標和指標陣列,C語言中指標與陣列有什麼區別呢?應該怎麼去區分?下面是小編為大家整理的C語言中指標與陣列的區別,歡迎參考~

C語言中指標與陣列的區別

通俗理解陣列指標和指標陣列

  陣列指標:

eg:int( *arr)[10];

陣列指標通俗理解就是這個陣列作為指標,指向某一個變數。

指標陣列:

eg:int*arr[10];

  指標陣列簡言之就是存放指標的陣列;

  ——陣列並非指標&&指標並非陣列

(1)定義一個外部變數:

eg:int value=10; int *p=&value;

舉例:當需要在一個函式中用這個變數時:externa int*p;而非extern int p[];

分析:當用:extern int p[];這樣的形式時,其實是:由於在定義這個變數的時候,是作為一個指標而定義的,則p指向的是 value的地址,當p當做一個數組被引入是,它其實存放的是value的地址,而並非指向value,導致調用出現錯誤。

(2)定義一個外部變數:

eg:int arr[10]={0};

舉例:當需要在函式中引入這個外部變數時:extern int arr[10];而非extern int *arr;

分析:當用extern int *arr;這樣的方式進行引入是,實際上這樣是不對的,在定義這個變數的時候是作為一個整形陣列來定義的,但是在宣告的時候是用指標來宣告的,通過陣列宣告可以訪問到整個陣列,但是通過指標實際上宣告的指標並非指向陣列,而是指向arr[10]陣列中首元素arr[0]地址的指標,導致訪問出現問題。

 ——二維陣列與指標的關係

定義一個二維陣列arr[3][3],由於二維陣列在記憶體中也是按照順序儲存,而並非我們所認為的按照矩陣形式儲存的。所以,arr[3]其實就相當與一個數組指標;指向arr[0][0],arr[1][0],arr[2][0].

  ____陣列與指標的其他區別

(1) 指標儲存的是資料的'地址;

陣列是用來儲存資料的。

(2)指標訪問資料是通過資料的地址進行解引用,間接訪問的;

陣列訪問資料是直接的。

(3)指標通常用於動態資料結構;

陣列用於存放固定數目而且型別相同的資料。

(4)指標通常指向匿名資料;

陣列通常存放已知的。