C语言结构体(struct)简单应用个人理解

struct用法

第一种 只有结构体定义

struct student{

  char name[20];

  int age;

  char class;

};

这里的struct student就相当于int等数据类型,可以用struct student定义变量,如struct student aaa,就类似定义int aaa;注意struct 和student合在一起才能表示一个结构类型。

第二种 结构体定义后面加一个变量

struct student{

  char name[20];

  int age;

  char class;

}student_1;

这里就相当于第一种的结构体多增加了一行语句,定义了一个变量,也就是说等价于

struct student{

  char name[20];

  int age;

  char class;

};

struct student  student_1;

第三种 唯一变量的结构体定义

struct {

  char name[20];

  int age;

  char class;

}student_1;

也就是说没有了student这个结构体名称,这样只能使用结构体变量student_1,如果还需要定义相同类型的结构体,必须重新定义,不能使用这个结构体定义,也就是说这个结构体只有唯一的一个变量student_1。

typedef  struct的用法

typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。

在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。

第一种  上面第二种用法前面直接加typedef

typedef struct student{

  char name[20];

  int age;

  char class;

}student_1;

这语句实际上完成两个操作:
1) 定义一个新的结构类型

struct student{

  char name[20];

  int age;

  char class;

};
2) typedef为这个新的结构起了一个名字,叫student_1。
typedef struct student student_1; (对比typedef int student_1来进行理解)
  因此,student_1实际上相当于struct student,这样定义一个变量的时候,既可以用struct student aaa,也可以用student_1 aaa。student_1成了一个数据类型。

如果有逗号,比如

typedef struct student{

  char name[20];

  int age;

  char class;

}student_1,student_2;

可以先理解成

struct student{

  char name[20];

  int age;

  char class;

}student_1;

struct student{

  char name[20];

  int age;

  char class;

}student_2;

这样再加上typedef,同上分析,也就是说struct student有两个别名,分别是student_1和student_2,都可以代替struct student定义变量。也就是说有三种用法,struct student aaa;student_1 aaa;student_2 aaa都是等价的。

第二种  上面第三种用法前面直接加typedef

typedef struct {

  char name[20];

  int age;

  char class;

}student_1;

根据唯一性,即定义变量的时候只能是student_1 aaa;

时间: 2024-10-25 15:49:46

C语言结构体(struct)简单应用个人理解的相关文章

C语言 - 结构体(struct)的位字段(:) 详解

结构体(struct)的位字段(:) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26722511 结构体(struct)可以使用位字段(:), 节省空间, 如以下代码, 结构体a中的, 第一个变量x占用1个字符, y占用2个字符, z占用33个字符(越界); 但是sizeof()会自动补齐, 如x+y一共占用4个字节, z占用8个字节, 所以结构体占用12个字节; 当使用加法运算时, 会初始化为0; 代码: /* *

漫谈C语言结构体struct、公用体union空间占用

先用代码说话: #include<stdio.h> union union_data0{ int a ;//本身占用4个字节 char b ;//本身占用1个字节 int c ; }; union union_data1{ short a;//本身占用2个字节 char b[13];//本身占用13个字节 int c ;//本身占用4个字节 }; struct struct_data{ int a ;//int本身占用4个字节,偏移量为0 char b ;//char本身占用1个字节,偏移量为

Go语言结构体(struct)

Go 语言结构体 Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型. 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合. 结构体表示一项记录,比如保存图书馆的书籍记录,每本书有以下属性: title       :书名 author   :作者 address       :地址 mobile         :手机号 publisher     :出版社 定义结构体 结构体定义需要使用 type 和 struct 语句.struct 语句定义一个

C语言结构体-struct

知识点: 1)结构体的定义. 2)结构体的sizeof. 3)  结构体的指针. 1) 结构体的定义: 在逻辑上有一定关联的多个数据类型做为一整体进行操作的数据结构,它的关键字是struct.下面我将定义一个结构体 struct Student{ char *name; int age; int sid; }; 我用上面定义的结构体Student来定义一个变量. struct Student student; 上面的代码有点烦,其实我可以这样写 struct Student{ char *nam

C语言 - 结构体(struct)比特字段(:) 详细解释

结构体(struct)比特字段(:) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26722511 结构体(struct)能够使用位字段(:), 节省空间, 例如以下面代码, 结构体a中的, 第一个变量x占用1个字符, y占用2个字符, z占用33个字符(越界); 可是sizeof()会自己主动补齐, 如x+y一共占用4个字节, z占用8个字节, 所以结构体占用12个字节; 当使用加法运算时, 会初始化为0; 代码

c 语言结构体struct的三种定义方式 及 typedef

struct 结构体名{ 成员列表: ..... }结构体变量: 结构体类型变量的定义 结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对问题事先自行定义,所以结构体类型变量的定义形式就增加了灵活性,共计有三种形式,分别介绍如下: 1) 先定义结构体类型,再定义结构体类型变量:struct stu / *定义学生结构体类型* /{     char name[20]; / * 学生姓名* /     char sex; / * 性别* /     long num; /

C语言结构体(struct)常见使用方法(转)

本文转自 CSDN huqinweI987 基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过一定方法访问修改内部变量. 结构体定义: 第一种:只有结构体定义 [cpp] view plaincopy struct stuff{ char job[20]; int age; float height; }; 第二种:附加该结构体类型的“结构体变量”的初始化的结构体定义 [cpp] view plaincopy

C语言结构体(struct)常见使用方法

基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过一定方法访问修改内部变量. 结构体定义: 第一种:只有结构体定义 [cpp] view plain copy struct stuff{ char job[20]; int age; float height; }; 第二种:附加该结构体类型的“结构体变量”的初始化的结构体定义 [cpp] view plain copy //直接带变量名Huqinwei st

strcut的用法--------C语言结构体(struct)常见使用方法(转载)

今天复习一下struct,顺便挖掘一下以前没注意的小细节: 基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过一定方法访问修改内部变量. 结构体定义: 第一种:只有结构体定义 [cpp] view plain copy struct stuff{ char job[20]; int age; float height; }; 第二种:附加该结构体类型的"结构体变量"的初始化的结构体定义 [cpp] 

go语言之行--结构体(struct)详解、链表

一.struct简介 go语言中没有像类的概念,但是可以通过结构体struct实现oop(面向对象编程).struct的成员(也叫属性或字段)可以是任何类型,如普通类型.复合类型.函数.map.interface.struct等,所以我们可以理解为go语言中的“类”. 二.struct详解 struct定义 在定义struct成员时候区分大小写,若首字母大写则该成员为公有成员(对外可见),否则是私有成员(对外不可见). type struct_variable_type struct { mem