struct结构体语法总结

转载 2018年04月17日 16:31:28

结构体简介

结构体属于聚合数据类型的一类,它将不同的数据类型整合在一起构成一个新的类型,相当于数据库中一条记录,比如学生结构体,整合了学号,姓名等等信息。结构体的好处就是可以对这些信息进行整体管理操作,类似面向对象中类的属性,有了结构体,我就可以更好抽象描述一个类别,个人感觉类就是由结构体发展而来的。在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 结构体名称”时,可以简写为“结构体名称”来声明。

C语言结构体struct的语法解析

本节,我们着重研究结构体定义,也就是struct 这种变量定义,C语言编译器是如何解析的,本节我们要解析的结构体定义如下:struct tag { int x; long y; ...
  • tyler_download
  • tyler_download
  • 2016-10-06 17:05:52
  • 1607

结构体struct 名称定义详解

在C语言中,使用struct定义了一个结构体之后,要使用它,也要跟上struct关键字,否则系统不认这个结构体,比如: struct SDK_SYSTEM_TIME{ ........... .......
  • XYK0318
  • XYK0318
  • 2016-08-08 13:46:26
  • 521

golang语法总结(十九):结构struct

Go没有class,也没有继承机制,只能定义结构体,但是功能还是很强大。本文先演示下它的基本用法。 简单使用示例: type person struct { N...
  • QQ245671051
  • QQ245671051
  • 2016-02-22 18:32:36
  • 1348

C++基础---结构体(struct)

1. 结构体(struct) 1.1 结构体的概念 结构体(struct):是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。 结构体(struct):是一种复合数据类型,结构类型。...
  • cainv89
  • cainv89
  • 2015-10-12 01:19:24
  • 10325

结构体(Struct)联合体(Union)枚举(enum)总结

对于这三个结构型数据类型,也C/C++当中常见的数据类型。不过,结构体,联合体,枚举这三种数据类型都适合在何种情况下使用,恐怕大多数人都不胜了解,下面就从概念上一一区别和 研究。 结构体struct是...
  • qq_1223113455
  • qq_1223113455
  • 2016-05-30 08:58:42
  • 741

自定义类型: 结构体,枚举,联合

   1.结构体    个人认为结构体和数组特别相似,只不过结构体和数组的区别在于结构体的成员可以是不同类型,而数组成员类型是相同的。    (1)结构体的声明 struct tag...
  • qq_41027326
  • qq_41027326
  • 2018-03-11 22:08:02
  • 48

Swift入门(七)——结构体(Struct)

引子之前我们在用Int,String等类型的时候,可能没有仔细研究过,其实这些基本类型与C或者Java不一样,不是严格的“基本类型”,他们其实是经过封装的结构体。按住Alt键点击Int类型后,可以看到...
  • abc649395594
  • abc649395594
  • 2015-08-03 23:58:14
  • 4518

C++之struct构造函数

C++之struct构造函数     在网络协议、通信控制、嵌入式系统的C/C++编程中,我们经常要传送的不是简单的字节流(char型数组),而是多种数据组合起来的一个整体,其表现形...
  • haiross
  • haiross
  • 2015-03-31 16:53:18
  • 7014

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

一、前言 编译环境是vs2010(32位)。 #include     #include     #include using namespace std; typedef struct {     ...
  • u014186096
  • u014186096
  • 2015-09-08 13:40:46
  • 2456

Java 结构体之 JavaStruct 使用教程<二> JavaStruct 用例分析

使用环境 前一篇在介绍 JavaStruct 类时指定了使用库使用环境为 Java 5 及以上,也即开发我们使用的 JDK 版本为1.5及以上就可以了。以下讲解的用例可以直接将 code 直接粘贴到 ...
  • JAZZSOLDIER
  • JAZZSOLDIER
  • 2017-07-21 14:23:21
  • 6010
收藏助手
不良信息举报
您举报文章:struct结构体语法总结
举报原因:
原因补充:

(最多只允许输入30个字)