C/C++ 学习之旅 - 实战3 - 在Struct结构体中使用函数Function

Coding部分:

#include<stdio.h>

struct Student{
    int ID;
    char* Name;
    int Age;
    void(*toString)(int id,char* name,int age);
};//定义包含学生ID、姓名、年龄和输出函数指针的结构体Student

void toString(int id,char* name,int age){
    printf("myStudent实例变量的ID值:%d\n",id);
    printf("myStudent实例变量的Name值:%s\n",name);
    printf("myStudent实例变量的Age值:%d\n",age);
}//输出函数,在实例化结构体时需要将内部函数指针与该函数链接起来

int main(){
    struct Student myStudent = {1,"罗帅",20};
    myStudent.toString = toString;//将外部的toString函数链接至结构体内部的函数指针上
    myStudent.toString(myStudent.ID,myStudent.Name,myStudent.Age);//调用结构体内部函数
    return 0;//退出程序
}

附上效果图(和上一篇随笔的效果是一样的,只是封装成了结构体内部函数):

笔者提醒:由于在C中,结构体内部不允许有函数的定义,所以只能通过在外部定义函数,并在结构体中给出函数指针,然后通过该指针来链接到该函数,从而实现调用结构体内部函数的效果。

在下一篇,我们将开始尝试用所学的东西,做一个基本的计算器功能,加油吧!

时间: 2024-10-02 17:01:30

C/C++ 学习之旅 - 实战3 - 在Struct结构体中使用函数Function的相关文章

C/C++ 学习之旅 - 实战2 - 使用Struct结构体输出多类型变量数据

现在的笔者好像变成了这样,我正常了么? 不管正不正常,开始今天的Coding: #include<stdio.h> struct Student{ int ID; char* Name; int Age; };//定义包含学生ID.姓名.年龄三个字段的结构体Student int main(){ struct Student myStudent = {1,"罗帅",20};//实例化结构体并赋值 printf("myStudent实例变量的ID值:%d\n&quo

黑马程序员学习笔记--------C语言变量类型,结构体,枚举

本章学习的知识是定义结构体,枚举等自定义的数据类型,已经宏命令,变量类型等细小的知识点,在开始本章的新知识学习之前首先我们要明白的是C语言有丰富的数据类型和运算符,因此计算能力非常强大,计算过程中使用的值一般用变量来存储.变量也是有分类型的,不同类型的变量有不同的存储类型.不同的生命周期.不同的作用域,C语言也提供了一些关键字来设置变量的属性(比如设置存储类型.生命周期). 一.变量类型 变量分为全局变量和局部变量. 首先说明一下局部变量的特点 1> 定义:在函数内部定义的变量,称为局部变量.形

Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)

日常的 Web UI 自动化测试过程中,get 或 navigate 到指定的页面后,若想截图的元素或者指定区域范围不在浏览器的显示区域内,则通过截屏则无法获取相应的信息,反而浪费了无畏的图片服务器资源,当然,最重要的还是未能达到自己的预期,是不是很内伤啊.此时,我们就不得不像正常用户操作一样,通过滚动页面至相应的区域,那么该如何滚动呢,此文就此给出答案. 此文实现的页面滚动,是通过 js 操作实现的,敬请各位小主参阅.若有不足之处,敬请大神指正,非常感谢! 直接上码了...... 1 /**

Python学习之旅 —— 基础篇(三)set集合、函数、文件操作

本篇要点: 数据类型:set集合 函数 文件操作 三元运算(三目运算)和lambda表达式 一.set集合 python中数据类型的一种,是无序并且不重复的数据集合.set源码: class set(object): """ 创建set集合 set() -> new empty set object 把可迭代的数据类型转换成元组 set(iterable) -> new set object Build an unordered collection of uni

Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)

Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: 1 /** 2 * Get Object of return from js 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoSeleniumDemo main.aaron.sele.core SeleniumCore.java execJSR, 2015-8-9

Selenium2学习-032-WebUI自动化实战实例-030-JavaScript 在 Selenium 自动化中的应用实例之五(高亮标示元素)

在自动化脚本编写过程中,操作元素之前,需要对元素进行高亮显示(通过修改元素的边框样式),同时进行截图,以记录操作的元素对象.在实际应用中较为少见,通常用于演示,或者发生错误时的屏幕截图捕捉,用于错误报告分析. 直接上码了...... 1 /** 2 * 3 * @function height light the element 4 * 5 * @author Aaron.ffp 6 * @version V1.0.0: autoUISelenium main.java.aaron.sele.c

Selenium2学习-022-WebUI自动化实战实例-020-JavaScript 在 Selenium 自动化中的应用实例之二(获取浏览器显示区域大小)

前几篇文章中简略概述了,如何获取.设置浏览器窗口大小,那么我们该如何获取浏览器显示区域的大小呢?此文讲对此进行简略概述,敬请各位小主参阅.若有不足之处,敬请各位大神指正,不胜感激! 获取浏览器显示区域的方法,我目前想到的只有以下两种方法: 1.通过 JavaScript  获取浏览器显示区域的大小 2.通过 WebDriver 截图,获取截图的大小,从而获得浏览器显示区域的大小 此文主要以第一种方法示例演示,第二种方法进行后续更新,敬请期待!谢谢! 1 /** 2 * Get width and

Selenium2学习-031-WebUI自动化实战实例-029-JavaScript 在 Selenium 自动化中的应用实例之四(获取元素位置和大小)

通过 JS 或 JQuery 获取到元素后,通过 offsetLeft.offsetTop.offsetWidth.offsetHeight 即可获得元素的位置和大小,非常的简单,直接上源码了,敬请参阅! 1 /** 2 * Get element position by jquery, and return integer Array [left distance, top distance, width distance, height distance] 3 * 4 * @author A

Selenium2学习-011-WebUI自动化实战实例-009-JavaScript 在 Selenium 自动化中的应用实例之一(赋值)

通常在编写 Selenium 的 WebUI 自动化脚本时,有些元素不易定位元素,或有些元素为隐藏的(此时用 WebElement.getText() 获取其值的时候,返回的结果为空),对日常的 UI 自动化脚本的编写造成了一定程度的影响.若亲有一定的前段开发基础,肯能会想到可否通过 JavaScript 脚本来操作元素呢?答案是肯定的,Slenium 已经为各位小主们提供了执行 js 脚本的功能,那就是 JavascriptExecutor,小主们只需要将 WebDriver 转换为 Java