结构体函数作用及示例

一、作用

1. 提高代码阅读性

2. 分类管理函数及部分属性

3. 偏向于c++的面向对象思维

二、使用方法:

1. 声明结构体函数

2. 初始化结构体函数

3. 调用结构体函数

三、示例

#include<stdio.h>

#include<stdlib.h>

/*structure declare*/

struct str_func{

    int a;

    int b;

    int (*add)(int a, int b);

    int (*sub)(int a, int b);

    int (*compare)(int a, int b);

};

int add(int a, int b){

    return a+b;

}

int sub(int a, int b){

    return a - b;

}

int compare(int a, int b){

    if (a>b)

        return a;

    else 

        return b;

}

/*create a structure and init*/

struct str_func test = {

    .a = 5,

    .b = 7,

    .add = add,              //function pointer point to function

    .sub = sub,

    .compare = compare,

};

int main(){

    if (test.compare)

        printf("a b max = %d\n",(test.compare(test.a,test.b)));

    if (test.compare)

        printf("a add b = %d\n",(test.add(test.a,test.b)));

    if (test.compare)

        printf("a sub b = %d\n",(test.sub(test.a,test.b)));

    return 0;

}

编译及运行结果:

摘自:https://blog.csdn.net/sinat_29891353/article/details/83067747

原文地址:https://www.cnblogs.com/huachunwei/p/12143970.html

时间: 2024-08-10 19:04:12

结构体函数作用及示例的相关文章

结构体和类的唯一区别就是类函数没有加说明是私有而结构体函数是公有

结构体和类的唯一区别就是              类函数没有加说明是私有                   而   结构体函数是公有

代码案例(结构体,函数指针,指针函数,冒泡排序) 修改

#import <Foundation/Foundation.h> typedef struct {     char name[20];     int age;     float score; }Stu; //建立字符串和函数之间的一一对应关系. typedef BOOL (*PStu) (Stu stu1,Stu stu2) ; typedef struct nameFunctionPair{     char name[20]; //存储函数对应的字符串     PStu funct

代码案例(结构体,函数指针,指针函数,冒泡排序)

typedef struct {     char name[20];     int age;     float score; }Stu; #import <Foundation/Foundation.h> //姓名升序 void sortByName(Stu *p , int count ) {     for (int i = 0 ; i < count -1; i ++) {         for (int j= 0 ; j < count -1-i; j ++) {

shell的编程结构体(函数、条件结构、循环结构)

1.1 shell函数 在shell中,函数可以被当作命令一样执行,它是命令的组合结构体.可以将函数看成是一个普通命令或者一个小型脚本. 首先给出几个关于函数的结论: (1).当在bash中直接调用函数时,如果函数名和命令名相同,则优先执行函数,除非使用command命令.例如:定义了一个名为rm的函数,在bash中输入rm执行时,执行的是rm函数,而非/bin/rm命令,除非使用"command rm ARGS". (2).如果函数名和命令别名同名,则优先执行别名.也就是说,在优先级

关于 结构体 函数的应用

前几天学习了函数然后紧接着学了结构体.虽然没有什么新的算法,但是是对以前内容的重新运用,更重要的是,这两个知识点,可以让程序更加简洁而且可以有效地减轻工作量.于是乎,做了一个信息统计的程序(主要实现的功能是,可以增加任何项目包括考核项目等等,并且可以进行排序操作). 小感想 :现定义结构体确定需要的数据类型.然后在主函数中定义数组,确定整个程序的模块(输入,计算 ,排序,输出等)最后完成函数构造: 示例:: struct chengji//结构体 { public string xingmin;

【C/C++学院】0814-引用高级、引用高级增加/auto自动变量自动根据类型创建数据/Bool/Enum/newdelete全局/大数据乘法与结构体/函数模板与auto/宽字符本地化/inline

引用高级.引用高级增加 #include<iostream> #include<stdlib.h> // int a[10] // int (&ra)[10] // int a[2][5] // int (&ra)[2][5] void main1() { int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int(&ra)[10](a);//引用就是给原来的变量有一个别名同一个地址 int i = 0; for (

2014.8.29结构体.函数

(一)结构体 然后在main函数里就可以定义: 1 static void Main(string[] args) 2 { 3 Student stu = new Student(); 4 stu.name = "张三"; 5 stu.NO = 20140813; 6 stu.age = 24; 7 8 Console.WriteLine("我叫{0},今年{1}岁,我的学号是{2}",stu.name,stu.age,stu.NO); 9 Console.Read

Swift基础(类,结构体,函数)

import Foundation // 创建一个类 class Student { // 属性(类的属性必须赋初值,如果不赋值,需要写自定义方法) var studentName: String var studentAge: Int // 方法 func fallInLove(girlName:String) { print("\(self.studentName)看上隔壁的\(girlName)") } // 构造方法(自定义init方法) init (studentName1:

逆波兰表达式 (递归+结构体函数)

标题:逆波兰表达式 正常的表达式称为中缀表达式,运算符在中间,主要是给人阅读的,机器求解并不方便. 例如:3 + 5 * (2 + 6) - 1 而且,常常需要用括号来改变运算次序. 相反,如果使用逆波兰表达式(前缀表达式)表示,上面的算式则表示为: - + 3 * 5 + 2 6 1 不再需要括号,机器可以用递归的方法很方便地求解. 为了简便,我们假设: 1. 只有 + - * 三种运算符 2. 每个运算数都是一个小于10的非负整数 下面的程序对一个逆波兰表示串进行求值. 其返回值为一个结构: