指標陣列,陣列指標,二維陣列,指標的指標的辨別

2021-06-20 14:59:17 字數 1171 閱讀 1706

指標陣列:array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標

陣列指標:a pointer to an array,即指向陣列的指標

還要注意的是他們用法的區別,下面舉例說明。

int* a[4]     指標陣列      

表示:陣列a中的元素都為int型指標     

元素表示:*a[i]   *(a[i])是一樣的,因為優先順序高於*

int (*a)[4]   陣列指標      

表示:指向陣列a的指標

元素表示:(*a)[i]   

陣列的陣列          char c[8][10];     

指標陣列             char *c[10];  

陣列指標(行指標)  char (*c)[10];    

指標的指標           char **c;      

乙個網友的一段分析相當給力的**:

#include "stdafx.h" 

#include using namespace std;

int _tmain(int argc, _tchar* argv)

,,};

// ptr2是乙個指向 int * 的指標,即ptr2的型別和&ptr是一樣的,注意:ptr指向的記憶體區域不定長

int * ptr2[3]=;

// ptr3是乙個指向 int [3] 的指標,即ptr3的型別和&arr1的型別是一樣的,注意:arr1指向的記憶體區域定長

int(* ptr3)[3]=&arr1;

ptr3=ptr1; // 沒錯,他們的型別相同

// ptr3=ptr2;//error 無法從「int *[3]」轉換為「int (*)[3]

// ptr4是乙個指向 int * 的指標,即ptr4的型別和&ptr是一樣的,注意:ptr指向的記憶體區域不定長

int ** ptr4;

//ptr4=&arr1; //error 無法從「int (*)[3]」轉換為「int **

ptr4=ptr2; // 沒錯,他們的型別相同

//ptr4=ptr3; // error 無法從「int (*)[3]」轉換為「int **

return 0;

}

指標陣列 陣列指標 二維陣列指標

指標陣列 如果乙個陣列中的所有元素儲存的都是指標,那麼我們就稱它為指標陣列。除了每個元素的資料型別不同,指標陣列和普通陣列在其他方面都是一樣的,下面是 乙個簡單的例子 include int main 也可以不指定長度,直接寫作 int parr 定義乙個指向指標陣列的指標 int parr arr...

二維陣列 指標陣列與陣列指標

一 首先我們從字面意思理解一下什麼是指標陣列什麼是陣列指標 1 指標陣列 本質是乙個陣列,陣列中的每乙個元素是乙個指標。2 陣列指標 本質是乙個指標,而指標指向乙個陣列。二 我們該怎麼區分指標陣列和陣列指標?1 總共有三種表示形式 int p 4 和int p 4 和int p 4 表面看起來是不是...

二維陣列相關(陣列指標 指標陣列)

一維陣列中,int a 5 變數名a就是陣列a首元素位址,是int 型別。a是整個陣列首位址,是指向有5個元素的陣列的指標。二維陣列中,變數名a就是0行起始位址,a 就有轉換到列的意思,就代表0行0列。陣列指標 是乙個指標,其指向的資料型別由乙個陣列構成 將陣列作為乙個陣列型別對待 如 int p ...