c语言中struct和typedef struct的用法_typedef struct用法-程序员宅基地

技术标签: c++  c语言  typedef  数据结构  

基本形式

在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:

struct 结构体名
{
    
    结构体所包含的变量或数组
};

结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member),比如

struct stu{
    
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //所在学习小组
    float score;  //成绩
};

注意大括号后面的分号;不能少,这是一条完整的语句

结构体可以包含多个基本类型的数据,也可以包含其他的结构体,称为复杂数据类型或构造数据类型。
**

struct的用法

**
1.

struct stu{
    
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //小组
    float score;  //成绩
};

既然结构体是一种数据类型,那么就可以用它来定义变量。例如:
struct stu stu1, stu2;

2.

你也可以在定义结构体的同时定义结构体变量:
struct stu{
    
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //小组
    float score;  //成绩
} stu1, stu2;

3.

如果只需要 stu1、stu2 两个变量,后面不需要再使用结构体名定义其他变量,那么在定义时就可以不给出结构体名,eg.
struct{
      //这里没有写 stu
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //小组
    float score;  //成绩
} stu1, stu2;

typedef struct的用法

typedef 就是给结构体起别名,比如:小明可以叫明明,喊明明和小明是一样的。
下面的例子就是 stu是struct student的别名一样,皇上不来,圣旨同样有效力。
1.

typedef struct student{
    

    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //小组
    float score;  //成绩
}stu;
那么我们定义该结构体变量的时候,就可以直接
stu stu1;

2.

可以直接省略student,直接用stu
typedef struct {
    

    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //小组
    float score;  //成绩
}stu;
stu stu1;

有时候写代码,常常会混淆struct和typedef struct的用法,在这里做个记录,方便查看

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_46015011/article/details/107831168

智能推荐

深谈德国车和日本车的区别--觉得分析的还算冷静客观-程序员宅基地

文章浏览阅读744次。《德系VS日系》比较客观的文章作者:颜宇鹏,新车评网创办人之一、总编辑、首席车评人、视频版主持人。从业超过十年,曾任专业汽车杂志试车总监、主编。阅车无数,对全球车型发展、中国汽车市场、试车驾驶技术有深厚积累,其见解独到的车评备受读者喜爱和业界推崇。在讨论“德系VS日系”这个话题时,我想先确立以下几点基础原则。..._2019新君威的前后防碰梁

ajax上传文件、FormData上传文件、html5上传文件、多文件上传_ajajx提交文件到php-程序员宅基地

文章浏览阅读448次。首先简单了解一下 FormData,点击链接:https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/Using_FormData_ObjectsIE浏览器版本最好为:IE10+,因为 FormData 兼容性问题然后查看示例,代码如下↓html 代码:<!DOCTYPE html><html lan..._ajajx提交文件到php

端口扫描技术_在端口扫描中隐蔽扫描能够更精准的判断出端口是否开启-程序员宅基地

文章浏览阅读3.6k次。(79条消息) 端口扫描原理和划分_HideInTime的博客-程序员宅基地_扫描器通过什么来判断端口的状态一、端口分类固定端口(0-1023):TCP的21(ftp),80(http),139(netbios),UDP的7(echo),69(tftp)等等动态端口(1024-49151):这些端口并不被固定的捆绑于某一服务,操作系统将这些端口动态的分配给各个进程, 同一进程两次分配有可能分配到不同的端口二、常用端口扫描技术1. 全TCP连接Connect()扫描此扫描试图与每一..._在端口扫描中隐蔽扫描能够更精准的判断出端口是否开启

Android apk 分析工具:APK Analyzer_什么工具可以比较两个apk 之间的差异-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏6次。前言Android studio 2.2 版本后自带有一个分析工具:APK Analyzer。这是一个专门分析 apk 的神器,主要作用如下: 1. (重要) 直观的看到 apk 中各个文件的大小 (比如 DEX,resource 等等)。我们可根据文件大小信息,减小 apk 的大小; 2. (重要) 学习大企业 app 的命名规范和目录架构规范,还可以查看大公司 app 使用了什么技术和第三方_什么工具可以比较两个apk 之间的差异

web使用自动扫描器_web目录扫描器-程序员宅基地

文章浏览阅读448次。4、有了关于现有漏洞的信息,我们可以跟踪引用并搜索已发布的漏洞,例如,如果我们在用户注册表中搜索CVE-2007-5106,这是一个XSS 漏洞,我们将在Security Focus中找到一个漏洞:https://www.securityfocus.com/bid/25769/exploit。1、我们将扫描Pruggia 漏洞应用程序,并将结果导出到一个HTML报告文件,该命令为:nikto -h http://192.168.120.129/peruggia/-o result.html。_web目录扫描器

解决升级JDK后:找不到sun.misc.Unsafe的类文件_jdk.unsupported位置-程序员宅基地

文章浏览阅读1.1k次。JDK9以后已经将sun.misc.Unsafe弃用,同时改进了lib文件的存储方式,将sun.misc.Unsafe全部存储在了jdk.unsupported里面。_jdk.unsupported位置

随便推点

云锁linux宝塔安装,【最新版】宝塔面板下为Nginx自编译云锁Web防护模块教程-程序员宅基地

文章浏览阅读639次。相信很多站长在使用宝塔面板的同时也会安装云锁用于加固服务器安全性,不过有时因为Nginx版本过高等问题导致安装云锁时无法自动安装Web防护模块,所以还需要我们在Linux系统下额外将云锁Web防护模块编译进Nginx才可以。之前也转载过一篇一、上传云锁Web防护模块压缩包并解压Ps:其实宝塔添加模块功能里可以通过配置shell脚本实现这些前置准备,但我还是喜欢用手动的方式上传,这样使步骤看起来更直..._宝塔 云锁自编译 测试

Android 笔记:Error:A problem occurred configuring project ':app'.-程序员宅基地

文章浏览阅读8.4k次。原文作者:雪飘碧鸳 在github上导入项目,或其他地方导入Android Studio,出现Error:A problem occurred configuring project ‘:app’.的错误。其实这种错误有很多种原因,需要对每种情况进行不同的处理才行,这里说的一种情况是JNI的情况,即该项目使用到C/C++库,此时需要引入NDK才行,先看下错误提示Gradle ‘trunk’ ..._error:a problem occurred configuring project ':app'.

dataframe的groupby,agg,unstack应用_group by unstack-程序员宅基地

文章浏览阅读603次。groupby一个索引的比较简单,这里主要讲两个索引的:这里先设dataframe为下图然后根据第0列和第1列来进行分组,再对第二列进行数量统计,这里用了nunique函数来进行数量统计上图中最上面的2表示是根据原表的第3列即序号2的那一列使用的agg函数得到的结果。unstack是把一维表转换成二维表,即把(0,1)这对分组条件分别写成表的行列索引,一一对应agg函数得到的结果,如下图:stack是把二维表转换成一维表,类似花括号形式(就像是思维导图一层一层括出去),第一列写上原本的行索引_group by unstack

树莓派宝塔搭建NAS私有云盘nextcloud_宝塔做nas-程序员宅基地

文章浏览阅读2.2k次。宝塔新建网站:假设文件夹根目录为/home/nextcloud创建FTP,数据集。并且选择php版本。删除文件夹根目录/home/nextcloud下的两个html文件。下载nextcloud文件:官网链接可以使用wget:wget https://download.nextcloud.com/server/releases/nextcloud-20.0.0.zip,或者本地端下载后拖过去。多线程下载:sudo apt install axel axel -n 20 ht.._宝塔做nas

快学Scala 第一课 (变量,类型,操作符)-程序员宅基地

文章浏览阅读41次。Scala 用val定义常量,用var定义变量。常量重新赋值就会报错。变量没有问题。注意:我们不需要给出值或者变量的类型,scala初始化表达式会自己推断出来。当然我们也可以指定类型。多个值和变量可以一起声明:Scala 类型:Byte, Char, Short, Int, Long, Float, Double, BooleanScala不区分基...

Oracle分区查询_oracle查询分区数据-程序员宅基地

文章浏览阅读1.4w次,点赞4次,收藏19次。根据分区查询速度会快很多:分区查询:SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = '表名'分区键查询:SELECT * FROM all_PART_KEY_COLUMNS where name='表名';根据分区名查询:select * from 表名 partition('分区名');根据分区键查询:select * from 表名 partition where ACTDATETIME>=to_date('2022_oracle查询分区数据

推荐文章

热门文章

相关标签