c 指標 指標和函式

2021-10-07 18:29:34 字數 2196 閱讀 3750

程式棧

支援函式執行的記憶體區域,通常和堆共存。即二者共同擁有一塊記憶體區域,棧位於記憶體區域的下部,堆位於記憶體區域的上部。

函式傳值

用指標傳遞資料: 一般用於對傳入的資料進行修改

void

funca

(int

* num1,

int* num2)

intmain()

//說明:在main函式中呼叫funca的時候,使用了指標傳遞資料,執行到funca的時候,funca函式

//內部的區域性變數,指向的值傳遞資料的位址,修改指向這個位址的值。即使函式執行完了也不影響

//已經修改過的值

用值傳遞:一般不對傳入的資料修改,取決於其資料的拷貝賦值函式的實現

void

funca

(int num1,

int num2)

intmain()

//執行funca函式的時候,會將n1和n2分別拷貝乙份副本,作為funca區域性變數使用,源資料沒有在函式funca中執行任何操作。因此資料不會發生變化。

用常量指標進行傳遞資料:和1的使用類似,不同的是指向常量的指標將不可以被修改。

void

funca

(const

int* num1,

int* num2)

void

funcb

(const

int* num1,

int*num2)

void

funcc

(const

int*

const num1,

int*num2)

說明: funca 和funcb 都傳入了指向常量的指標,但是在funcb中還是隱式的將num1給更改了,要使的num1 不被更改應該使用const

int*

返回指標

在函式中有分配有效的記憶體空間,可以返回指標

在函式引數中有引用或者指標被傳入,可以返回對應的指標

不可以返回區域性資料的指標,會出現程式異常

函式指標

函式指標表示持有函式位址的指標。可以用於將函式賦值給這個函式指標,然後有函式指標進行資料的呼叫執行

例如:

void (*foo)()

void (*foo) ()

返回值 函式指標變數的名字 引數

示例:

int* f() 返回int型別指標的普通函式。

int (*f)() 返回int型別的函式指標。

int* (*f)()返回int型別指標的函式指標。

使用示例:

int

(*fptr)

(int);

intsquare

(int num)

intmain()

函式指標作為引數的使用
即這個要求傳入的引數是乙個符合函式指標定義的函式
int

(*fptr)

(int);

typedef

int(

*fptr1)

(int

,int);

intsquare

(int num)

intsum

(int num1,

int num2)

//要求傳入的函式符合fptr1的型別定義,函式sum符合這個定義。

intsquare1

(int num, fptr1 fp)

intmain()

函式指標作為返回值

即函式返回值需要符合函式定義時候的函式指標要求

//函式指標定義

typedef

int(

*rfunc)

(int

,int);

//一般函式定義

intsummer

(int num1 ,

int num2)

//返回函式指標的函式定義

rfunc returnfuncinfo

(int style)

return summer;

}int

main()

C 指標函式和函式指標

1 指標函式 1 基本概念 指標函式 顧名思義就是帶有指標的函式,即其本質是乙個函式,只不過這種函式返回的是乙個對應型別的位址。2 定義式 type func type type 如 int max int x,int y 3 例子詳解 cpp view plain copy 1.include 2...

c 指標函式和函式指標

函式指標與指標函式 1 函式指標 形式 返回型別 函式名 參數列 一種特殊的指標,它指向函式的入口 定義乙個函式指標p,只能指向返回值為int,形參為兩個int的函式 輸出結果 include stdafx.h include using namespace std int p int,int in...

C 函式指標和指標函式

c 要是不常用,相信過四天你的指標函式與函式指標的概念就該忘個精光。其實只要記住誰在後面誰就是哪個本質。先了解下指標陣列與陣列指標吧 陣列指標 就是指向陣列的指標,它表示的是乙個指標,它指向的是乙個陣列,它的重點是指標,如,int pa 8 宣告了乙個指標,該指標指向了乙個有8個int型元素的陣列 ...