指標和陣列

2021-08-10 21:50:20 字數 2157 閱讀 7834

指標,陣列

指標和陣列沒有關係!!!!

指標陣列

指標陣列是陣列,是乙個存放指標的陣列

int *arr[10]; 因為[ ] 比 * 優先順序高,所以arr先和[ ]結合,所以它是乙個陣列

char *arr[10];

陣列指標

陣列指標是指標,指向乙個陣列的指標

int (*p)[10];

p是乙個指標變數,指向的是具有十個元素的整型陣列

然後我們來看這個:

int (*parr[10])[5];

*parr[10]; 是個指標陣列

int (*)[5]; 是個陣列指標

所以總體就是,它是乙個指標陣列,裡面的指標都指向五個元素的一維陣列

指標和陣列的定義和宣告

定義是不存在的東西要讓他存在,宣告是讓知道有這麼個東西的存在,又說宣告就是定義變數本身

之前我們宣告全域性變數的時候是這樣的: extren int a;

可是如果我們這麼寫:

char arr = "abcdef";

int main()

會輸出什麼呢?

這麼寫的話,因為char arr[ ];時arr是乙個七個元素的陣列,會開闢七個空間,但宣告時,會把arr當成指標來識別,別且只訪問四個位元組,如題,會將abcd賦給指標arr,並且會把abcd當成乙個位址

所以這麼寫不一定能執行。

如果定義成指標,宣告成陣列呢?

char *p = "abcdef";

extren char p[ ];

指標指向的是常量字串,且p是四個位元組的,在識別char型別陣列時,認為陣列大小是4。訪問陣列是,輸出的是p的位址的四個部分

所以不推薦這兩種寫法

函式指標

輸出結果:

所以,函式也是有位址的,而且函式名和&函式名都表示的是函式的位址

所以就有函式指標

int (* pfun)(); //指向返回值為int,引數列表為空的函式的指標

void (*pfun)(); //指向返回值為void,引數列表為空的函式的指標

跟陣列指標還是有點類似的,不過還要注意返回值,是不是想到了指標陣列。。 int *arr[10]

而 int *pfun(); //看清楚,這是個函式,返回值為整型指標的函式!!!!

來看這兩個:

(*(void (*)())0);

void (*signal(int, void(*)(int)))(int);

**1:(void (*)( )) 這一段,裡面是個函式指標,外面帶括號就是強制轉換,所以把0強制轉換成函式指標,再解引用,就是可以理解為 位址(); 這個樣子,這裡位址 == 0,因為上面提到過函式名就是它的位址,0( ); 這個後面帶括號帶封號,就是函式呼叫

**2:signal(....)是個函式,引數是int和函式指標,而signal函式的返回值是函式指標,這個指標指向的是返回值為void *,引數為int的函式

函式指標陣列

int (*parr[10]) ();

因為parr先河[ ] 結合,所以它是個陣列,其次又是個指標,最後是函式,所以是函式指標陣列

一類指標放在乙個陣列中,都會返回值為int,引數為空的函式

函式指標的陣列的指標

指向函式指標陣列的指標

乙個指標,指向的是乙個函式指標陣列

定義: void (*(*ppfunarr)[10])(const char*);

綜合對比:

函式指標 int (*pfun)(int,int);

函式指標陣列 int (*pfunarr[5])(int, int);

函式指標陣列的指標: int (*(*ppfunarr)[5])(int, int)

!!!!關鍵在於符號的優先順序!!!!

還有指向函式指標陣列指標陣列的指標等等可以無限延伸。。。不過**是寫給人看的,基本不會用到

指標陣列和陣列指標

有關陣列指標和指標陣列容易混淆,本文舉例說明兩者的區別,並加以分析。基本概念 指標 inta 1 int p a 指標的指標 int p2p p 簡單陣列 intb 20 指標陣列 int p 10 指標陣列,含有10個指標元素,即每乙個元素都是乙個指標 陣列指標 int p 10 這個指標用來指向...

指標陣列和陣列指標

理解這兩個概念,當從語言學的語法角度開始,定語 名詞,即 的 語句。指標陣列 指標的陣列 陣列指標 陣列的指標。一 指標陣列 元素為指標的陣列 顧名思義,就是說的首先是乙個陣列吧,然後陣列的元素是指標而已。說明形式為 type pointer array constant1 constant2 co...

指標陣列和陣列指標

該文時自己對指標陣列用法的一點總結,還望高手指點不足原文如下 由於以前對指標陣列不太明白,所以自己寫了 乙個小的測試程式來驗證了自己的猜測,先總結如下 指標陣列,由名字就可以知道的該陣列中的成員都是為指標的。其定義的方法為 char p 5 該初定義乙個包含5個char 型別的陣列的指標,由於p本身...