函数指针数组指针+结构体数组
时间:2022-07-24
本文章向大家介绍函数指针数组指针+结构体数组,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
/*****************
结构体数组
计算一个班学生四门课程平均分
************************/
#include <stdio.h>
#include <string.h>
char *fun1(char *p)
{
printf("%sn",p);
return p;
}
char *fun2(char *p)
{
printf("%sn",p);
return p;
}
char *fun3(char *p)
{
printf("%sn",p);
return p;
}
typedef struct date
{
int year;
int month;
int day;
}DATE;
typedef struct student
{
long studentID;
char studentName[10];
char studentSex;
DATE birthday;
int score[4];
}STUDENT;
void function()
{
printf("call functionn");
}
int main()
{
int i,j,sum[30];
void(*p)();
*(int*)&p = (int) 0x401330;
p = function;
(*p)();
char* (*a[3])(char *p);
char* (*(*pf)[3])(char *p);
pf = &a;
a[0]= fun1;
a[1] =fun2;
a[2]= fun3;
a[2]("func33");
a[1]("func22");
( *(char*(*)(char *)) 0x00401350)("func1111");
( *(char*(*)(char *)) 0x00401366)("func2222");
( *(char*(*)(char *)) 0x0040137c)("func3333");
printf("pf[0][0] = %pn",pf[0][0]);
printf("pf[0][1] = %pn",pf[0][1]);
printf("pf[0][2] = %pn",pf[0][2]);
printf("pf[0] = %pn",pf[0]);
printf("pf[1] = %pn",pf[1]);
printf("a[1] = %pn",a[1]);
printf("a[0] = %pn",a[0]);
printf("&a[0] = %pn",&a[0]);
printf("a[2] = %pn",a[2]);
pf[0][0]("fun1");
pf[0][1]("fun2");
pf[0][2]("fun3");
(*(*pf+1))("fun1");
STUDENT stu[5] =
{
{1001,"张三",'M',{1994,6,19},{72,32,89,41}},
{1002,"赵六",'F',{1998,6,19},{72,56,78,41}},
{1003,"王五",'M',{2004,6,19},{96,52,89,41}},
{1004,"李四",'F',{1689,6,19},{56,56,65,41}}
};
for(i=0;i<4;i++)
{
sum[i] = 0;
for(j=0;j<4;j++)
{
sum[i] = sum[i] + stu[i].score[j];
}
printf("%10ld %8s %3c %6d/%02d/%02d %4d %4d %4d %4d %6.1fn",
stu[i].studentID,
stu[i].studentName,
stu[i].studentSex,
stu[i].birthday.year,
stu[i].birthday.month,
stu[i].birthday.day,
stu[i].score[0],
stu[i].score[1],
stu[i].score[2],
stu[i].score[3],
sum[i]/4.0);
}
return 0;
}
运行结果如下:
call function
func33
func22
func1111
func2222
func3333
pf[0][0] = 00401350
pf[0][1] = 00401366
pf[0][2] = 0040137C
pf[0] = 0028FE7C
pf[1] = 0028FE88
a[1] = 00401366
a[0] = 00401350
&a[0] = 0028FE7C
a[2] = 0040137C
fun1
fun2
fun3
fun1
1001 张三 M 1994/06/19 72 32 89 41 58.5
1002 赵六 F 1998/06/19 72 56 78 41 61.8
1003 王五 M 2004/06/19 96 52 89 41 69.5
1004 李四 F 1689/06/19 56 56 65 41 54.5
Process returned 0 (0x0) execution time : 0.015 s
Press any key to continue.
- Python入门基础连载(4)控制流
- 济西站构建大数据运营网络,打造智能化列车加工厂
- 五位数终端收购的域名dongxiao.cn已启用
- 全球互联网发展进入“拐点”——展望下一代互联网
- 2 分钟论文:语音生成表情包背后的技术原理
- 享学课堂谈-Python程序员的常见错误
- 区块链技术,如何提升网络安全?
- 趣店推“大白汽车”业务 启用域名dabaiqiche.com
- 糖果吃了那么多,你真的知道比特币分叉是咋回事吗?
- 静息态网络拓扑传输认知任务信息
- MYSQL字符串截取总结:LEFT、RIGHT、SUBSTRING、SUBSTRING
- 如何用Python提取中文关键词?
- 工信部:将加大网络提速降费力度加快百兆宽带普及
- 人工智能AI(5):线性代数之矩阵、线性空间
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux 文件隐藏权限
- 还在用print()查找错误?日志消息这顿排骨它不香嘛?
- CNS图表复现02—Seurat标准流程之聚类分群
- Python 技术篇-莉莉机器人api调用方法,实例演示。免费的机器人
- Hugo Travis 完结!
- 【Python】秀儿!两行代码制作你的专属动态二维码
- Windows 技术篇-网卡物理(MAC)地址查看方法
- Go使用工厂方法实例结构体
- Java交互界面实现计算器开发设计【附函数源码】
- Python 技术篇-读取本地文件的字节数
- Golang Flag包的参数格式问题
- Python 技术篇-对音频、图片等文件进行base64编码和解码
- 图片:“给你五十行代码把我变成字符画!” 程序:“太多了,一半都用不完!”
- HTML布局标记和列表标记
- 使用frp搭建内网穿透