感受下函式指標(指標函式)和結構體內部函式
阿新 • • 發佈:2019-01-29
函式指標是指向函式的指標,指標函式是函式返回指標型別
只是用typedef簡化一下,
//函式指標
#include<stdio.h>
int fun(int a)
{
return a*a;
}
int dy(int (*f)(int x),int a)
{
return f(a);
}
int main()
{
int a=9;
int sum;
int (*f)(int x)=fun;
sum=dy(f,a);//f是函式指標,這裡指向fun
printf("%d\n",sum);
}
網上找的一段程式碼,關於指標函式的。
int (*) (double*, char);這個指標指向一個函式,此函式返回int型並帶有兩個分別是double*型和char型的形參。只是用typedef簡化一下,
就是用fpApp代替了int(*)(int a,int b);typedef int (*fpAdd)(int a,int b);
//指標函式 #include<stdio.h> #include<string.h> //返回普通指標 int* sum(int *f) { return f; } //返回函式指標 typedef int (*fpAdd)(int a,int b); //宣告兩個和fpAdd型別一致的函式 int AddTest(int a,int b); int AddTestAdd5(int a,int b); //宣告兩個返回函式指標的函式 fpAdd GetAddFun(); fpAdd GetAdd5Fun(); int main() { int a = 1; int b = 2; int sum; //取得指向函式(AddTest)的指標 fpAdd add = GetAddFun(); //取得指向函式(AddTestAdd5)的指標 fpAdd add5 = GetAdd5Fun(); //通過函式指標呼叫函式。 sum = add(a,b); //輸出結果 printf("a+b=%d\n",sum); sum = add5(a,b); //輸出結果 printf("a+b=%d\n",sum); //getch(); } int AddTest(int a,int b) { return a+b; } int AddTestAdd5(int a,int b) { return a+b+5; } fpAdd GetAddFun() { return AddTest; } fpAdd GetAdd5Fun() { return AddTestAdd5; }
結構體和類其實就是一個咚咚。
//結構體內部函式
#include<stdio.h>
struct student{
int num;
//int (*sum)(int x);
int sum(int x)
{
return x;
}
};
int main()
{
int x;
struct student s1;
s1.num=1;
x=s1.sum(s1.num);
printf("x=%d",x);
}