結構體函式

2021-07-28 21:55:11 字數 1907 閱讀 7557

(一)函式-指標1

、指標函式

指標函式本質是乙個函式,函式返回型別是某一型別的指標。

定義格式 :函式型別

*  函式名

( 引數列表)

例:  int   * func1 (x, y )   

返回值為

整型型別指標的函式

char   * func2 (x, y )         

返回值為

字元型別指標的函式 2

、函式指標

函式型別(*

指標變數名)

(形參列表);

第乙個括號一定不能少。

最簡單的辨別方式就是看函式名前面的指標

*號有沒有被括號()包含,如果被包含就是函式指標,反之則是指標函式。

例  int f();//宣告乙個函式;

int (*p)() ;// 宣告函式指標

main()

p=f;

(*p)();//呼叫函式}

(二)函式指標的定義

一般的函式指標可以這麼定義

:int(*func)(int,int);

表示乙個指向含有兩個

int引數並且返回值是

int形式的任何乙個函式指標

. 假如存在這樣的乙個函式

:int add2(int x,int y)

那麼在實際使用指標

func

時可以這樣實現

:func=&add2; //

指標賦值,或者

func=add2; add2

與&add2

意義相同

printf("func(3,4)=%d\n",func(3,4));

事實上,

為了**的移植考慮

,一般使用

typedef

定義函式指標型別

.typedef int(*fun)(int,int);

fun func=&add2;

func(

3,4);

(三)結構體中指向函式的指標c

語言中的

struct

是最接近類的概念,但是在

c語言的

struct

中只有成員,不能有函式,但是可以有指向函式的指標,這也就方便了我們使用函式了。

示例:#include

在程式開發的時候,即使是

c語言也可以利用物件導向思想,而且部分的物件導向思想還可以用

c給實現出來。例如,我們可以利用結構體來模擬類、多型。類的方法就用函式指標來表示。

(四)結構體指標作為函式返回值的用法

看下面這個例子:摘自lwip //

首先定義結構體

struct lwip_socket ; //

定義乙個此結構體變數,注意宣告為

static

static struct lwip_socket sockets[num_sockets]; //

然後就可以用使用了

static struct lwip_socket *

get_socket(int s)

sock = &sockets[s];

if (!sock->conn)

return sock;

}

結構體和函式

main.c c語言學習 include void change int value 定義乙個結構體型別 struct person void change2 struct person value void change3 struct person p int main int argc,con...

1 3 struct 結構體 結構體與函式

5 結構與函式 結構體作為函式的變元 struct family 比較兩個家庭的媽媽 是否相同。是返回0 否則返回非0 int siblings struct family member1,struct family member2 注 使用結構體作為函式引數,編譯器會將實參結構體中的成員複製乙份到...

函式指標 結構體struct

include typedef int func t typedef struct sopopnum int add int num1,int num2 int sub int num1,int num2 int mult int num1,int num2 int div int num1,int...