传值问题
#include<stdio.h>
int inc(int a)
{
? ?return (++a);
}
int multi(int *a,int *b,int *c)
{?
? return (*c=*a* *b);
}
typedef int (*FUNC1)(int in);//定義一個(gè)函數(shù)指針FUNC1,這個(gè)函數(shù)帶有1個(gè)int , 返回int型.
typedef int (*FUNC2)(int*,int*,int*);//定義一個(gè)函數(shù)指針FUNC2,這個(gè)函數(shù)帶有3個(gè)int *, 返回int型.
void show(FUNC2 fun,int arg1,int *arg2)
? FUNC1 p=&inc;//FUNC1類(lèi)型 函數(shù)指針p 指向函數(shù)inc的首地址
? int temp=p(arg1);//此時(shí)調(diào)用函數(shù)inc,參數(shù)為10,返回值為11
? fun(&temp,&arg1,arg2);//調(diào)用函數(shù)multi,參數(shù)為(11,10,arg2) arg2為指針變量負(fù)責(zé)帶回返回值
? printf("%d\n",*arg2);//輸出 110
}
int main()
{?
? ?int a;
? ?show(multi,10,&a);
? ?getchar();
? ?return 0;
}
若這樣定義typedef int(FUNC1)(int in);那么把FUNC1 p = inc;改成FUNC1 *p = inc;
int inc(int a)
{
? ?return (++a);
}
int multi(int *a,int *b,int *c)
{?
? return (*c=*a* *b);
}
typedef int (*FUNC1)(int in);//定義一個(gè)函數(shù)指針FUNC1,這個(gè)函數(shù)帶有1個(gè)int , 返回int型.
typedef int (*FUNC2)(int*,int*,int*);//定義一個(gè)函數(shù)指針FUNC2,這個(gè)函數(shù)帶有3個(gè)int *, 返回int型.
void show(FUNC2 fun,int arg1,int *arg2)
? FUNC1 p=&inc;//FUNC1類(lèi)型 函數(shù)指針p 指向函數(shù)inc的首地址
? int temp=p(arg1);//此時(shí)調(diào)用函數(shù)inc,參數(shù)為10,返回值為11
? fun(&temp,&arg1,arg2);//調(diào)用函數(shù)multi,參數(shù)為(11,10,arg2) arg2為指針變量負(fù)責(zé)帶回返回值
? printf("%d\n",*arg2);//輸出 110
}
int main()
{?
? ?int a;
? ?show(multi,10,&a);
? ?getchar();
? ?return 0;
}
若這樣定義typedef int(FUNC1)(int in);那么把FUNC1 p = inc;改成FUNC1 *p = inc;
總結(jié)
- 上一篇: z = x++ - --y * b/a;
- 下一篇: float x 与“零值”比较的if语句