指標 函式指標

2021-07-05 17:13:52 字數 1937 閱讀 5294

函式指標是指向函式的指標變數。 因而「函式指標」本身首先應是指標變數,只不過該指標變數指向函式。這正如用指標變數可指向整型變數、字元型、陣列一樣,這裡是指向函式。如前所述,c在編譯時,每乙個函式都有乙個入口位址,該入口位址就是函式指標所指向的位址。有了指向函式的指標變數後,可用該指標變數呼叫函式,就如同用指標變數可引用其他型別變數一樣,在這些概念上是大體一致的。函式指標有兩個用途:呼叫函式和做函式的引數。

函式指標的宣告方法為:

返回值型別 (*指標變數名)([形參列表]);

指標變數名 = 函式名;

此處的函式名應該是與函式指標的定義中擁有相同的返回值型別, 形參列表的.

例: 按照不同的排序方式對結構體進行排序.

function.h

struct student ;

typedef

struct student student;

typedef

bool (*sort)(student s1, student s2);//對函式指標起別名

void printstudent(student stu, int count);

void sortstudentarray(student *stus, int count, sort p);

bool cmpbynameasc(student s1, student s2);//按照姓名公升序排序

bool cmpbyageasc(student s1, student s2);//按照年齡公升序排序

bool cmpbynamedes(student s1, student s2);//按照姓名降序排序

function.m

void printstudent(student stu, int count)

}void sortstudentarray(student *stus, int count, sort p) }}

}bool cmpbynameasc(student s1, student s2)

bool cmpbyageasc(student s1, student s2)

bool cmpbynamedes(student s1, student s2)

main.m

//定義結構體陣列,包含五個元素

student stus = ,,,

,};

//元素個數

intcount = sizeof(stus) / sizeof(student);

/*//輸出結構體陣列

printstudent(stus, count);

findstudentbyscore(stus, count, addstr);

printf("驗證:\n");

printstudent(stus, count);

*///動態排序:

//周一, 姓名降序

printf("周一, 姓名降序:\n");

sortstudentarray(stus, count, cmpbynamedes);

printstudent(stus, count);

//周二, 年齡公升序

printf("周二, 年齡公升序:\n");

sortstudentarray(stus, count, cmpbyageasc);

printstudent(stus, count);

//週三, 姓名公升序

printf("週三, 姓名公升序:\n");

sortstudentarray(stus, count, cmpbynameasc);

printstudent(stus, count);

函式指標 指標函式 指標的指標 指標陣列

一 函式指標 首先它是乙個指標,只是這個指標指向的是乙個函式。指標變數可以指向變數的位址 陣列 字串 動態分配位址,同時也可指向乙個函式,每個函式在編譯的時候,系統會分配給該函式乙個入口位址,函式名表示這個入口位址,那麼指向函式的指標變數稱為函式指標變數。表示 struct file operati...

指標陣列,陣列指標,指標函式,函式指標

int p 4 指標陣列。是個有4個元素的陣列,每個元素的是指向整型的指標。int p 4 陣列指標。它是乙個指標,指向有4個整型元素的陣列。int func void 指標函式。無參函式,返回整型指標。int func void 表示函式指標,可以指向無參,且返回值為整型指標的函式。右左規則 因為...

指標函式,指標常量,函式指標,常量指標

指標函式 指標函式是指函式的返回值型別是乙個指標型別,即本質是乙個函式。如 float find float pionter 4 int n 指標常量 指標常量是指標所指向的位置不能改變,即指標本身是乙個常量。如 int const p a 指標就是位址,也就是位址不能改變,如上 int const...