- 相關(guān)推薦
C語(yǔ)言結(jié)構(gòu)體中的函數(shù)指針
C語(yǔ)言結(jié)構(gòu)體中的函數(shù)指針內(nèi)容由小編收集整理,希望對(duì)您的 學(xué)習(xí)有所幫助!更多內(nèi)容請(qǐng)關(guān)注應(yīng)屆畢業(yè)生考試網(wǎng)!
結(jié)構(gòu)體是由一系列具有相同類型或不同類型的數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合。所以,標(biāo)準(zhǔn)C中的結(jié)構(gòu)體是不允許包含成員函數(shù)的,當(dāng)然C++中的結(jié)構(gòu)體對(duì)此進(jìn)行了擴(kuò)展。那么,我們?cè)贑語(yǔ)言的結(jié)構(gòu)體中,只能通過定義函數(shù)指針的方式,用函數(shù)指針指向相應(yīng)函數(shù),以此達(dá)到調(diào)用函數(shù)的目的。
1. 函數(shù)指針
一般的函數(shù)指針可以這么定義:
int(*func)(int,int);
表示一個(gè)指向含有兩個(gè)int參數(shù)并且返回值是int形式的任何一個(gè)函數(shù)指針. 假如存在這樣的一個(gè)函數(shù):
int add2(int x,int y)
{
return x+y;
}
那么在實(shí)際使用指針func時(shí)可以這樣實(shí)現(xiàn):
func=&add2; //指針賦值,或者func=add2; add2與&add2意義相同
printf("func(3,4)=%d"n",func(3,4));
事實(shí)上,為了代碼的移植考慮,一般使用typedef定義函數(shù)指針類型.
typedef int(*FUN)(int,int);
FUN func=&add2;
func();
2.結(jié)構(gòu)體中包含函數(shù)指針
其實(shí)在結(jié)構(gòu)體中,也可以像一般變量一樣,包含函數(shù)指針變量.下面是一種簡(jiǎn)單的實(shí)現(xiàn).
#include "stdio.h"
struct DEMO
{
int x,y;
int (*func)(int,int); //函數(shù)指針
};
int add2(int x,int y)
{
return x+y;
}
void main()
{
struct DEMO demo;
demo.func=&add2; //結(jié)構(gòu)體函數(shù)指針賦值
printf("func(3,4)=%d"n",demo.func(3,4));
}
【C語(yǔ)言結(jié)構(gòu)體中的函數(shù)指針】相關(guān)文章:
C語(yǔ)言指針函數(shù)和函數(shù)指針詳解12-08
C語(yǔ)言的指針型函數(shù)02-20
C語(yǔ)言函數(shù)指針變量06-04
C語(yǔ)言中指針函數(shù)與函數(shù)指針有何區(qū)別02-28
C語(yǔ)言函數(shù)指針與回調(diào)函數(shù)詳解03-26
初步剖析C語(yǔ)言編程中的結(jié)構(gòu)體02-18
講解C語(yǔ)言編程中的結(jié)構(gòu)體對(duì)齊01-17
C語(yǔ)言的指針12-21