结构体的三种定义方法、结构体类型名(可选标志符)什么时候可以省略

这篇具有很好参考价值的文章主要介绍了结构体的三种定义方法、结构体类型名(可选标志符)什么时候可以省略。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

结构体的三种定义方法

一、单独定义:

  先定义结构体类型,再定义变量
  定义结构体的格式如下:
   struct 结构体名 {
   若干数据项;
   } ;

  其中,struct为关键字; 结构体名是用户定义的类型标识。 { }中是组成该结构体的成员。成员的数据类型可以是C语言所允许的任何数据类型。
采用这种方式定义的结构体,创建变量的格式为:
   struct 结构体名(也就是可选标记符) 结构体变量名 ;
   例如

 struct student{
 int age;
 string name;
 };
 struct student s1,s2;

二、混合定义

   struct 结构体名 {
   若干数据项;
   } 结构体变量名 ;

  定义结构体类型时,同时定义结构变量
  其中,struct为关键字; 结构体名是用户定义的类型标识。 { }中是组成该结构体的成员。成员的数据类型可以是C语言所允许的任何数据类型,结构体变量名 为该结构体定义变量名称(用户自定义)。
  不难看出,相比于第1种形式,只是将“结构体变量”附加在大括号后面进行定义,省略了“struct 结构体名 结构体变量名 ;”这条语句,其余本质相同。
  例如

struct student{
int age;
string name;
}s1,s2;
其中,s1,s2是变量

三、无类型名定义

   struct {
   若干数据项;
   } 结构体变量名 ;

  相比于第2种形式,只是去掉了“结构体名”,其余本质相同。

struct {
int age;
string name;
}s1;

总结

   不难看出,形式1、形式2、形式3的主要区别体现在“有无结构体名”、“变量的定义位置”不同。
  第1种形式为“一般形式”,应熟悉掌握。
   形式2相比于形式1——只是 将“结构体变量”附加在大括号后面进行定义,省略了“struct 结构体名 结构体变量名 ;”这条语句,其余本质相同。
   形式3相比于形式2——只是 去掉了“结构体名” ,其余本质相同。
  因此,掌握了“形式1”,稍作变动即可得到形式2和形式3。

可选标志符(类型名)什么时候可以省

其一;
struct
{
    char title[MAXTITL]; 
    char author[MAXAUTL];
float value;
}library;

//注意这里不再是定义声明结构体类型,而是直接创建结构体变量了,这个编译器会分配内存的;
//这样的确可以省略标识符也就是结构体名,但是只能使用一次;因为这是;声明结构体的过程和定义结构体变量的过程和在了一起;并且个成员变量没有初始化的;
//如果你想多次使用一个结构体模块,这样子是行不通的;
这种方式不能指明结构体类型名而是直接定义结构体变量,并且在值定义一次结构体变量时适用,无结构体名的结构体类型是无法重复使用的。
也就是说,后面程序不能再定义此类型变量了,除非再写一次重复的struct。

其二;

用typedef定义新类型名来代替已有类型名,即给已有类型重新命名;
一般格式为;typedef 已有类型 新类型名;

typedef int Elem; 
typedef struct{
    int date;
    .....
    .....
}STUDENT;
STUDENT stu1,stu2;

结构体的三种定义方法、结构体类型名(可选标志符)什么时候可以省略
可参考文章:
https://zhuanlan.zhihu.com/p/520770506?utm_id=0文章来源地址https://www.toymoban.com/news/detail-450303.html

到了这里,关于结构体的三种定义方法、结构体类型名(可选标志符)什么时候可以省略的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【C语言】判断字符类型的三种方法

    【C语言】判断字符类型的三种方法

    🦄 个人主页 :修修修也 🎏 所属专栏 :C语言 ⚙️ 操作环境 : Visual Studio 2022 目录 一.字符的类型分类 1.ASCII的定义:  2.ASCII的产生原因是: 3.ASCII的内容: 二.字符类型判断相关库函数 1.isdigit(),用于判断字符是否为数字。 2. isalpha(),用于判断字符是否为字母。 3. isalnum(),用

    2024年02月06日
    浏览(8)
  • C#异步方法async/await的三种返回类型

    有群友问C#异步方法async返回值Task和void的区别?看似简单,但不容易把它们用好。在C#中的异步编程已经成为现代编程的标配,异步方法(async/await)是实现异步编程的一种常用方式。在异步方法中,可以使用 Task 或 void 作为返回类型,还可以使用ValueTask返回类型。本文将介绍

    2024年02月04日
    浏览(11)
  • C++中求string类型字符串长度的三种方法

    C++中求string类型字符串长度的三种方法

    length()函数是string的内置成员方,用于返回string类型字符串的实际长度。 length()函数声明: // 返回 string 长度,单位字节 size_t length() const noexcept; 示例1: size()函数与length()一样,没有本质区别。string类刚开始只有length()函数,延续了C语言的风格。引入STL之后,为了兼容又加入

    2024年02月07日
    浏览(10)
  • 【微信小程序】使用自定义字体的三种方法

    【微信小程序】使用自定义字体的三种方法

    小程序官方提供的接口,最便捷的加载字体的方法,不过限制颇多。必须https且同源,canvas等原生组件不支持。注意!!使用本地文件无效,必须使用网络地址。 官方文档:wx.loadFontFace(Object object) | 微信开放文档 演示代码: 传统的css规则,跟loadFontFace限制一样,必须https且同

    2024年02月08日
    浏览(10)
  • 【数据结构与算法】快速排序的三种实现方法

    【数据结构与算法】快速排序的三种实现方法

      目录 一.基本思想 二.Hoare法 动态演示 三.挖坑法 动态演示 四.前后指针法 动态演示 五.快速排序优化 随机下标交换法 三路取中法 六.快速排序的特性 任取待排序元素序列中的某元素作为 基准值 ,按照该排序码将待排序集合 分割成两子序列 , 左子序列中所有元素均小于基

    2023年04月09日
    浏览(16)
  • 实现ConfigMap热更新的三种常用方法:使用sidecar、CI脚本和自定义Controller

    目录 背景 方法一:使用ConfigMap-Reload Sidecar 方法二:使用CI脚本实现ConfigMap热更新 方法三:使用Controller实现ConfigMap热更新 结论 ConfigMap是Kubernetes中用来存储配置信息的一种资源类型。在Kubernetes集群中,ConfigMap被广泛地用于存储应用程序的配置信息。这些配置信息可以包括环

    2024年02月09日
    浏览(7)
  • 【C语言13】结构体的声明,定义与结构体的内存对齐

    【C语言13】结构体的声明,定义与结构体的内存对齐

    通俗的说,结构体就是一个类的集合,如同整形数组是整形数字的集合体,结构体也是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 如果我们要表达一本书,那么这本书的元素有什么呢,书的名字,书的作者,书的创作日期~,而c语言中内置

    2024年02月13日
    浏览(8)
  • iOS开发Swift-8-类的继承,方法重写,构造器,枚举类型,可选类型,强制解包,可选绑定,隐式可选类型...

    1.类的继承  2.方法的重写 3.构造器: 创建对象;给对象进行初始化  4.枚举类型 5.枚举的原始值 6.枚举的简写  7.可选类型  8.强制解包 9.可选绑定  10.隐式可选类型  11.可选类型自动赋值

    2024年02月09日
    浏览(14)
  • C语言结构体的定义与使用

    参考:C语言指针 1.定义与使用 结构体是一种构造数据类型,把不同类型的数据组合成一个整体 结构体的定义形式:   结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的

    2024年02月05日
    浏览(9)
  • 结构体的使用和结构体指针的定义注意事项

    结构体的使用和结构体指针的定义注意事项

    1、使用背景      由于想把不同地方的三个变量数据存放在一个结构体中,并且调用W25QXX_Write((u8*)p,FLASH_SIZE-100,SIZE); //从倒数第100个地址处开始,写入SIZE长度的数据。调用flash写数据函数,其参数为指针地址,于是需要定义一个结构体和指向结构体的指针,这样调用flash写函数

    2024年01月20日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包