转自:http://blog.csdn.net/dawn_after_dark/article/details/73555562

结构体简介

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

C语言结构体语法

第一种语法表示

struct 结构体名称{    

数据类型 member1;    

数据类型 member2;

};

这种方式在声明结构体变量时为:struct 结构体名称 结构体变量名

example :

 #include<stdio.h>
struct Student{
int sNo;
char name[];
};
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[];
}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[];
}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[];
}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 结构体名称”时,可以简写为“结构体名称”来声明。

C/C++结构体语法总结的更多相关文章

  1. ios结构体语法

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

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

  3. C基础--结构体

    C语言,结构体语法: 1.定义结构体类型: struct 结构体名称 { 成员类型 成员名称1; 成员类型 成员名称2; ... }; 例:struct Date { int year ; int m ...

  4. Go语言中结构体的使用-第2部分OOP

    1 概述 结构体的基本语法请参见:Go语言中结构体的使用-第1部分结构体.结构体除了是一个复合数据之外,还用来做面向对象编程.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性. ...

  5. C语言 结构体篇

    结构体:是一种构造类型 它是由若干成员组成的 其中每一个成员都可以是一个基本数据类型或者又是一个构造类型 定义结构体变量后,系统就会为其自动分配内存 为了便于更大的程序便于修改和使用  常常将结构体类 ...

  6. C语言函数不能返回数组,但可以返回结构体

    为什么C语言函数可以返回结构体,却不可以返回数组?有这样的问题并不奇怪,因为C语言数组和结构体本质上都是管理一块内存,那为何编译器要区别对待二者呢? C语言函数为什么不能返回数组? 在C语言程序开发中 ...

  7. C++ 炼气期之结构体

    1. 前言 随着计算机向着不同领域的延伸,数据的概念已经不仅局限于数值型数据,计算机需要处理大量的非数值.且复杂的类型数据. 为了能抽象地描述这些非数值.复杂类型的数据,C++引入了复合数据类型的概念 ...

  8. Swift3.0P1 语法指南——类和结构体

    原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...

  9. 全面总结sizeof的用法(定义、语法、指针变量、数组、结构体、类、联合体、位域位段)

    一.前言 编译环境是vs2010(32位). <span style="font-size:18px;">#include<iostream> #inclu ...

随机推荐

  1. 《C++ Primer Plus》第6章 学习笔记

    使用引导程序选择不同操作的语句后,程序和编程将更有趣.C++提供了if 语句 .if else 语 句 和 switch 语句来管理选项.if 语句使程序有条件地执行语句或语句块,也就是说,如果满足特 ...

  2. 最受欢迎的五大BUG管理系统

    五大最受欢迎的BUG管理系统    Google在中国大*陆遭遇变故做出暂时性的退出大*陆市场,也使很多忠实的用户受到小小的挫折,以本公司为例,原本的BUG都是记录在google的EXCEL在线文档中 ...

  3. jenkins配置邮件报警

    author:headsen chen date: 2018-05-15  13:49:21 在jerkins的主配置页面上: 注意:不用 安装什么报警邮件的插件.直接配置就可以了. 系统管理 --- ...

  4. ios 动画的时候 如果加阴影 会卡顿的

    记录一下今天某群的聊天记录,一些算是经验吧,以后有用的.呵呵~    动画的时候 如果加阴影 会卡顿的 A  10:59:13            _toView.layer.shadowColor ...

  5. 《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言

    原创文章,欢迎转载.转载请注明:关东升的博客 在Swift语言出现之前,开发iOS或OS X应用主要使用Objective-C语言,此外还可以使用C和C++语言,但是UI部分只能使用Objective ...

  6. Python闲谈(一)mgrid慢放

    不论是利用Mayavi还是matplotlib绘制三维图表,里面都用到了numpy中的一个函数叫mgrid.本次博客我简单地讲一下mgrid是干什么用的,以及一个三维曲面是如何绘制出来的. 首先说明一 ...

  7. react-native 学习(三)

    上一次讲到了react-native 的配置环境 和 如何去进行调试,这一次我们说一说,关于react-native的 样式兼容问题. 由于iphonex的发售,在兼容的时候,我门也需要去考虑ipho ...

  8. 前端开发 - JavaScript - 总结

    一.JavaScript的特征 javaScript是一种web前端的描述语言,也是一种基于对象(object)和事件驱动(Event Driven)的.安全性好的脚本语言.它运行在客户端从而减轻服务 ...

  9. Mysql日常操作

    创建用户并授权 grant all privileges on test.* to "test"@"localhost" identified by " ...

  10. 20.Bulk Write Operations-官方文档摘录

    1.有序操作列表将会串行执行,但如果在一个写操作过程出现异常错误,则不会处理剩余的任何写操作 2.无序操作列表将会并发执行,如果在一个写操作过程出现异常错误,则不影响,继续执行(并发无序) 3.对比无 ...