700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言中的指针应用 函数指针 指针函数 结构体中定义函数指针。

C语言中的指针应用 函数指针 指针函数 结构体中定义函数指针。

时间:2024-01-07 04:12:14

相关推荐

C语言中的指针应用 函数指针 指针函数 结构体中定义函数指针。

指针函数

指针函数就是一个返回指针的函数,其本质是一个函数,该函数的返回值是一个指针。

声明一个指针函数

int* fun(int x,int y);

例子

typedef struct _Data{int a;int b;}Data;//指针函数Data* f(int a,int b){Data * data = new Data;data->a = a;data->b = b;return data;}int main(void){//调用指针函数Data * myData = f(4,5);printf("%d,%d",myData->a,myData->b);return 0;}

函数指针

函数指针的本质就是一个指针变量,该指针指向一个函数的地址(函数的首地址)。如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。那么这个地址我们就可以用指针变量来存储。

声明一个函数指针

int(*fun)(int,int);/*注意这里的(*fun)的括号千万不能省略,如果省略了就是一个指针函数了*/

给函数指针赋值

fun=&Function; //Function是一个函数名fun=Function; //Function是一个函数名/*两种方法都可以都是一样的*/

调用函数指针

int c; //存放函数返回值c=(*fun)(x,y); //x,y是函数的参数c=fun(x,y); //x,y是函数的参数/*两种都可以,都一样*/

例子:

#include "stdio.h"int Max(int x,int y);int main(void){int(*fun)(int,int);fun=Max;printf("MAX=%d",fun(3,5));return 0;}int Max(int x,int y){if(x>y)return x;else return y;}

结构体中定义函数指针

在C语言的struct中只有成员,不能有函数,但是可以有指向函数的指针,这也就方便了我们使用函数了。

两种定义方式

1、

#include "stdio.h"int Max(int, int);struct Function {int(*fun)(int, int) = Max;};int main(void){struct Function Fun;//Fun.fun = Max;printf("MAX=%d",Fun.fun(2,3));return 0;}int Max(int x, int y){int z;if (x > y)z = x;if (x < y)z = y;return z;}

2、

#include "stdio.h"int Max(int, int);struct Function {int(*fun)(int, int);};int main(void){struct Function Fun;Fun.fun = Max;printf("MAX=%d",Fun.fun(2,3));return 0;}int Max(int x, int y){int z;if (x > y)z = x;if (x < y)z = y;return z;}

总结:

以上就是我这次分享的一写C语言的指针用法。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。