c语言函数指针数组的简单实例

来源:互联网 发布:java的简单的课程设计 编辑:程序博客网 时间:2024/05/22 13:20
#include <stdio.h>#include <stdlib.h>#include <time.h>#include<winsock2.h>#pragma comment(lib,"ws2_32.lib")//显示系统当前时间void f1(){   time_t lt;    lt = time(NULL);    printf("当前系统时间为:%s\n", ctime(& lt)); //打印出系统时间}//显示本机IPvoid f2(){WSADATA wsaData;char name[255];//定义用于存放获得的主机名的变量 char *ip;//定义IP地址变量 PHOSTENT hostinfo; //调用MAKEWORD()获得Winsock版本的正确值,用于加载Winsock库 if ( WSAStartup( MAKEWORD(2,0), &wsaData ) == 0 ) { //现在是加载Winsock库,如果WSAStartup()函数返回值为0,说明加载成功,程序可以继续 if( gethostname ( name, sizeof(name)) == 0) { //如果成功地将本地主机名存放入由name参数指定的缓冲区中 if((hostinfo = gethostbyname(name)) != NULL) { //这是获取主机名,如果获得主机名成功的话,将返回一个指针,指向hostinfo,hostinfo //为PHOSTENT型的变量,下面即将用到这个结构体 ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list); //调用inet_ntoa()函数,将hostinfo结构变量中的h_addr_list转化为标准的点分表示的IP //打印IP地址(如192.168.0.1) printf("本机IP地址为:%s\n",ip);//输出IP地址} } WSACleanup( );//卸载Winsock库,并释放所有资源 }}//退出程序void f3(){exit(0);}int main (){int choice;void (*foo[3])()={f1,f2,f3};//声明函数指针数组do{ printf("-----请选择一项操作------\n");printf("0.显示时间\n");printf("1.显示IP地址\n");printf("2.EXIT\n");scanf("%d",&choice);//此处可以直接用函数指针数组解决,来代替switch-case语句,使程序更加简洁,这种在有很多switch-case选项时优点更加明显 foo[choice]();}while(choice==0||choice==1);return 0;}

原创粉丝点击