關於指標,函式和陣列

2021-08-13 20:16:26 字數 1457 閱讀 1872

指標,陣列,函式分別在c語言學習中,都很重要的東西。也是大多數同學較為頭疼的,那麼函式,陣列和指標組合在一起,又會又哪些新的變數型別呢。

在這之前,我先要和大家強調一點,,,其實指標就是指標,陣列就是陣列。陣列和指標之間,,,沒關係~     只是他們在訪問內部變數時的形式可以相同。

所有我們要特別區分幾個量:指標陣列

,陣列指標

,函式指標

,函式指標陣列

和指向函式指標陣列的指標

一.指標陣列:

本質就是乙個陣列,裡面存放的元素型別是指標,比如: int *nums[10]     (定義了乙個名稱為num的長度為10的存放元素型別為int型指標 變數的陣列。)陣列中的每個元素都是乙個指標,每個指標都可以指向乙個字串。

二 . 陣列指標:

本質就是乙個指標,可以指向乙個陣列,比如:int  (*p)[4]  (表示定義乙個陣列指標,指向含4個元素int型的一維陣列。)

區別指標陣列,和陣列指標。如果是文字則這個變數的型別看最後兩個字,如果是表示式,我們就要看變數名先於誰結合,這裡就要引用運算子的優先順序了,(),[ ],的優先順序都比 * 高,所有加(* 變數名)時,才是指標。

三.函式指標:

本質上還是乙個指標。是指向函式的指標,也就是說該指標變數存放的是函式的入口位址。

函式名可以便是該函式的位址,&函式名也可以表示。

例如:int strcmp(char , char )的函式指標定義:int (p)(char, char *)

四 . 函式指標陣列 :

本質上是乙個陣列。(綜上四種型別可知乙個變數的型別看表述的最後兩個字即可)存放的是指向各個函式的指標,也就是說該陣列存放的指標變數,指向的是函式的入口位址。例如:int (strcmp[ 10 ])(char ,char ) ;返回值為int 型別的,帶有兩個引數(分別為char ,char *)的函式指標陣列。

他可以存放一系列引數型別相同,返回值型別相同的類似函式,在使用時通過陣列呼叫,減小了時間複雜度。

五 . 指向函式指標陣列的指標

我們比較容易的就看出這是乙個指標型別。他和函式指標陣列的區別在哪呢?就是多了個()所有我們的例如:可以這樣寫:int ((*strcmp)[10])(char ,char);這就比較複雜了,一般使用起來也不方便,可讀性也不強,一般不適用。

我們試著使用一下函式指標陣列:使用函式指標陣列代替switch函式,**量一下子就減少了不少。

#include

int add(int a, int b)

int sub(int a, int b)

int mul(int a, int b)

int div(int a, int b)

int main();

printf("the result is :%d"\n,prt[1](a,b));

return

0;}

關於指標陣列和陣列指標

陣列指標 舉例說明 int p 5 陣列指標的英文是 a pointer to an array 也就是指向陣列的指標。通過int p 5 p 是宣告,宣告p是乙個指標,它指向的內容是int 5 這個陣列。簡單運用下 int a 5 int p 5 a 這裡的意思也就是a是個五位的陣列,而p指向陣列...

關於「指標陣列」和」陣列指標「

我一直弄不清楚 指標陣列 和 陣列指標 的區別,最近這段時間看到了一些關於陣列和指標的關聯和區別的資料,然後總結了下這兩個概念的區別,以備後續檢視。1 區分指標陣列和陣列指標 short ptr 10 指標陣列,可理解為 存放指標的陣列 short ptr1 10 陣列指標,可理解為 指向陣列的指標...

關於指標和陣列

1.指標陣列 形如int arr 10 的型別,指標陣列可以簡單理解為存放指標變數的陣列。2.陣列指標 形如int arr 10 的型別,陣列指標可以簡單理解為指向陣列的指標。就上面所介紹的兩種型別來看,有一種較為簡單的記憶方法,看 和誰先和arr接觸,若是先和 接觸,即為陣列指標,若是先和接觸,即...