(一)函式-指標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...