C語言基礎 指標和函式的補充21

2021-08-01 17:15:32 字數 2339 閱讀 9543

1. 指標作為函式的引數.

1).效果

在函式的內部可以通過這個引數指標去修改實參變數的值.

2).當函式的返回值有多個的時候.

3).位址傳遞.

4).如果函式的引數是1個指標.函式希望傳遞給呼叫者1個資訊.

函式內部只會去取指標指向的變數的值而不會修改.

那麼這個時候這個引數指標就是要const修飾.

2. 指標作為函式的返回值

1).指標當然可以作為函式的返回值.

但是.不能返回區域性變數的位址.

換句話說:你返回的指標指向的變數一定要保證在函式結束之後,那個空間沒有被**還存在.

2).如果你就是要返回1個指標,那麼你就要保證這個指標指向的空間在函式結束以後仍然存在.

那麼這個時候,就可以將空間申請在堆區.然後返回堆區的位址.

一定要記得,呼叫者使用了完之後,記得free

3.注意.

1).可以返回區域性變數的值.但是不能返回區域性變數的位址.

2).如果你非要返回指標,那麼就應該把這個空間申請在堆區.

4. 案例:

寫1個函式.傳入1個1-7的星期數,返回對應的英文星期天.

void getweekday(int day);

1).如果返回值是字串,那麼返回值的型別就寫char*

2).直接返回字串常量.

5. 申請在常量區的空間.不會被**的.

直到程式結束的時候才會**.

不能改:

以字元指標儲存在常量區的字串資料不能改.

其他儲存在常量區的資料是可以改的. 1.

我們之前學習的指標.

一般情況都是指向另外

1個變數.

int num = 10;

int* p1 = #

指標是指向記憶體中的

1個位元組空間的.

2.程式在執行的時候

.會將程式載入到記憶體.

程式中主要有**/指令

.

**段中主要儲存程式的**

.而程式的**就包括函式.

所以,函式肯定要存在記憶體的**段中.

既然函式要儲存在記憶體中

那麼肯定要用

1塊空間來儲存.

那麼這個塊空間一定有

1個位址.n

那麼我們就可以宣告

1個指標

,儲存這個函式的位址

.讓這個指標指向這個函式.

使用指標來間接的呼叫函式.

優勢:呼叫函式有了兩種方式.

->

直接使用函式名呼叫

->

使用指向函式的指標間接呼叫.

3.指向函式的指標的宣告

1). 1

個指標函式的指標

.並不是任意的函式都可以指向.

而是有限定的

.要求指向的函式的返回值型別和引數描述必須要與指標的描述一樣.

2).宣告語法

返回值型別

(*指標名

)([引數列表

]);

void (*pfunction)();

表示宣告了

1個指向函式的指標

,名字叫做

pfunction.

這個指標只能指向沒有返回值

,並且沒有引數的函式.

int (*pfun)(int num1,int num2);

表示宣告了

1個指向函式的指標

,名字叫做

pfun.

這個指標只能指向返回值為

int型別

並且有兩個整型的引數的函式.

4).指向函式的指標的初始化.

1).取到符合指標條件的函式的位址.

函式的名稱就代表函式的位址.

2).將位址賦值給指標變數.

直接將符合條件的函式的名稱賦值給這個指標.

3).注意.

函式名代表函式的位址.

不要函式名加小括弧

.如果加了小括弧

,就代表執行這個函式

拿到這個函式的返回值.

5).如何使用指標來間接的呼叫指標指向的函式呢?]

void (*pfunc)() = test; //pfunc

指標就指向了

test函式

pfunc();

(*pfunc)();

有引數就給

,有返回值就接.

6).小技巧.

如果要定義

1個指標指向

1個函式

拷貝這個函式頭

.刪除函式名

用小括弧代替

裡面寫上

*加指標名稱

C語言基礎 函式指標 指標函式

參考這位大佬的文章,加上自己的理解 定義 指標函式,就是乙個返回值是指標的函式,其本質是乙個函式,而該函式的返回值是乙個指標。宣告格式為 型別識別符號 函式名 參數列 例如 int fun int x,int y 它的返回值是乙個int型別的指標 指標函式也沒什麼特別的,和普通函式對比不過就是其返回...

C語言 指標函式和函式指標

指標函式和函式指標 指標函式其實是乙個簡稱,是指帶指標的函式,它本質上是乙個函式,只是返回的是某種型別的指標。其定義的格式為 型別識別符號 函式名 參數列 函式指標,從本質上說是乙個指標,只是它指向的不是一般的變數,而是乙個函式。因為每個函式都有乙個入口位址,函式指標指向的就是函式的入口位址。其定義...

C語言 指標函式和函式指標

1 指標函式是指帶指標的函式,本質上是乙個函式,函式返回值是某一型別的指標 定義 型別識別符號 函式名 參數列 int f int x,int y 它首先是乙個函式,只不過這個函式的返回值是乙個位址值,函式返回值必須用同型別的指標變數來接受,也就是說,指標函式一定有函式返回值,而且,在主調函式中,函...