结构体简介

结构体属于聚合数据类型的一类,它将不同的数据类型整合在一起构成一个新的类型,相当于数据库中一条记录,比如学生结构体,整合了学号,姓名等等信息。结构体的好处就是可以对这些信息进行整体管理操作,类似面向对象中类的属性,有了结构体,我就可以更好抽象描述一个类别,个人感觉类就是由结构体发展而来的。在C/C++中,结构体声明的关键字为struct。

C语言结构体语法
第一种语法表示
struct 结构体名称{ 
   数据类型 member1; 
   数据类型 member2; 
}; 
这种方式在声明结构体变量时为:struct 结构体名称 结构体变量名 
example :

#include<stdio.h>
struct Student{int sNo;char name[10];
};
int main(){struct Student stu;scanf("%d",&stu.sNo);scanf("%s",stu.name);printf("%d\n",stu.sNo);
}

第二种语法表示
typedef struct 结构体名称{ 
   数据类型 member1; 
   数据类型 member2; 
}结构体名称别名; 
这种方式在声明结构体变量时有两种方式。

第一种:struct 结构体名称 构体变量名 
第二种:结构体名称别名 结构体变量名

原因:这里使用了typedef关键字,此关键字的作用就是声明数据类型的别名,方便用户编程,所以这里用了之后,结构体名称别名就相当于struct 结构体名称。在声明结构体变量时,就无需写struct了。 
example:

#include<stdio.h>
typedef struct Student{int sNo;char name[10];
}Stu;
int main(){struct Student stu;  //方式一Stu stu1;            //方式二scanf("%d",&stu.sNo);scanf("%s",stu.name);printf("%d\n",stu.sNo);scanf("%d",&stu1.sNo);scanf("%s",stu1.name);printf("%d\n",stu1.sNo);
}

第三种方式
struct 结构体名称{ 
   数据类型 member1; 
   数据类型 member2; 
}结构体变量名;

相当于:

struct 结构体名称{ 
   数据类型 member1; 
   数据类型 member2; 
}; 
struct 结构体名称 结构体变量名;

这种方式既定义了结构体名称,同时声明了一个结构体变量名。在其它地方也可以通过struct 结构体来再次声明其它变量,而第四种方法则不可以。 
example:

#include<stdio.h>
struct Student{int sNo;char name[10];
}stu;      //此处stu 是变量名
int main(){scanf("%d",&stu.sNo);scanf("%s",stu.name);printf("%d\n",stu.sNo);
}

第四种方式
struct { 
   数据类型 member1; 
   数据类型 member2; 
}结构体变量名;

此方式是匿名结构体,在定义时同时声明2个结构体变量,但不能在其它地方声明,因为我们无法得知该结构体的标识符,所以就无法通过标识符来声明变量。 
example:

#include<stdio.h>
struct {int sNo;char name[10];
}stu,stu1;     //匿名结构体,同时定义了2个结构体变量
int main(){scanf("%d",&stu.sNo);scanf("%s",stu.name);printf("%d\n",stu.sNo);scanf("%d",&stu1.sNo);scanf("%s",stu1.name);printf("%d\n",stu1.sNo);
}

C++语言结构体语法
C++语言结构体语法的C大同小异,声明结构体变量时可以省略struct 其它无变化! 
具体参照C语言部分,在用到“struct 结构体名称”时,可以简写为“结构体名称”来声明。

原文:https://blog.csdn.net/dawn_after_dark/article/details/73555562 
版权声明:本文为博主原创文章,转载请附上博文链接!

C/C++结构体语法总结相关推荐

  1. c语言结构体语法定义,C | 结构体定义

    话说C语言是很多语言学习的基础,理解并掌握好了C语言的一些语法规则,对于以后学习或者说自学其他语言,可以节省不少的时间.下面我们就来了解C语言程序当中的结构体知识点. 结构体的定义形式如下: stru ...

  2. C语言基本语法——结构体、联合和枚举

    一.结构体 1.什么是结构体 2.结构体语法格式 3.结构体所占内存空间 4.结构体成员赋值 二.联合 1.什么是联合 2.联合语法格式 三.枚举 1.什么是枚举 2.枚举语法格式 一.结构体 1.什 ...

  3. Object-C---gt;Swift之(八)类和结构体

    在Swift中类和结构体有高度的相似性.二者主要区别是: 1. 结构体不支持继承 2. 结构体不支持定义析构器 3. 结构体是值类型,而类是引用类型 定义类语法格式: [修饰符]class 类名 { ...

  4. 为什么C语言函数不能返回数组,却可以返回结构体?

    C语言函数为什么不能返回数组? 在C语言程序开发中,我们不可以编写下面这样的代码: char f(void)[8] { char ret; // ...fill... return ret; } in ...

  5. c++ new一个结构体_C语言结构体,又一个纸老虎,纯干货讲解(附代码)

    来源:网络,排版整理:晓宇 微信公众号:芯片之家(ID:chiphome-dy)结构体的定义结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构.结构体和其他类型基础数 ...

  6. 为什么C语言函数不能返回数组,却可以返回结构体

    C语言函数为什么不能返回数组? 在C语言程序开发中,我们不可以编写下面这样的代码: char f(void[8]{ char ret;// ...fill... return ret; }int ma ...

  7. [matlab]使用struct创建结构体

    [matlab]使用struct创建结构体 语法: struct(域名1,属性值1,域名2,属性值2,.....) 我们具体看看结构体怎么使用: >> person(1)=struct(' ...

  8. solidity 结构体01

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; /* 结构体 结构体具有多重属性,结构体可以在一个合 ...

  9. C语言结构体(struct)最全的讲解(万字干货)

    结构体的定义 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构. 结构体和其他类型基础数据类型一样,例如int类型,char类型只不过结构体可以做成你想要的数据类型 ...

  10. C语言 泛型链表 如何计算(结构体中各元素)相对内存地址?(字节对齐,结构体对齐)offsetof()函数 ( (struct X*)0 ) -> Y)语法(匿名结构体)

    示例: typedef struct _user {char name[20];char sex[20];int age;struct list_head mylist;//自定义结构体里保存双向循环 ...

最新文章

  1. 如何调用系统的包安装自己的apk呢?
  2. 高端唯有定制,把 sublime 打造成专属的 IDE
  3. 概率编程库Pymc3案例之Coal mining disasters
  4. SHA-1算法的C语言实现(源码来自网络)
  5. 中学编程_您可以从30岁的第一次编程采访中学到什么
  6. [node.js]小释
  7. Mouse Without Border 无法安装问题
  8. 西部数据暂停与华为的合作关系及发货
  9. HTML网易云音乐首页动画,仿网易云音乐广告页的转场动画
  10. python编程选股_通达信转python,python编写选股公式
  11. cruzer php sandisk 闪迪u盘量产工具_SanDisk Cruzer Micro(闪迪U盘量产助手)V1.1 最新版
  12. 狂神ajax,Ajax 学习笔记 by狂神说
  13. 【Unity】Jay 开发日志(四)——道具效果的实现(下)
  14. 【测试工具】搭建API服务
  15. IIS通过共享文件夹发布aspx程序站点(部分为原创)
  16. 将被雪藏的AI算法,抛开快手和火山,YouTube的儿童APP值得学习吗?
  17. Flutter实战项目-第八篇 监听键盘弹起
  18. 关于DSP320F28335步进电机控制几个问题
  19. Ngnix配置config
  20. vmware使用u盘安装系统

热门文章

  1. php正弦函数图像,Go语言输出正弦函数(Sin)图像
  2. linux 读取权限目录权限,文件的读取与写入权限《 Linux 文件与目录权限 》
  3. pyqt5优秀项目python_基于Pyqt5打造量化系统GUI
  4. ssm连接mysql引入外部配置文件username无法被正确解析
  5. Comparable与Comparator对象比较
  6. Java学习笔记之设计模式(1)设计模式简介
  7. 有加密狗的软件怎样实现全网络电脑用_加密狗应用领域有哪些?为您揭开7大行业软件保护的奥秘...
  8. Nginx系列(7):Nginx高并发初探
  9. Sp_15_极限定理
  10. OOM框架AutoMapper基本使用(2)