【C 语言】结构体 ( 结构体类型定义 | 结构体类型别名 | 声明结构体变量的三种方法 | 栈内存中声明结构体变量 | 定义隐式结构体时声明变量 | 定义普通结构体时声明变量 )
文章目录
- 一、结构体类型定义
- 二、结构体类型别名
- 三、结构体类型变量声明
- 1、使用结构体类型 ( 别名 ) 声明变量
- 2、 定义隐式结构体时声明变量
- 3、定义普通结构体时声明变量
- 二、完整代码示例
一、结构体类型定义
使用 struct
关键字 , 定义普通的 结构体类型 , 这是定义了 固定大小内存块别名 , 此时还没有给 结构体 分配内存 ;
- 声明了 结构体类型 变量后 , 才会在 栈内存 中为其分配内存 ;
- 使用
malloc
可以在 堆内存 中为其分配内存 ;
/*** @brief The Student struct* 定义 结构体 数据类型 , 这是定义了 固定大小内存块别名* 此时还没有给 结构体 分配内存* 声明了 结构体类型 变量后 , 才会在 栈内存中为其分配内存* 使用 malloc 可以在堆内存中为其分配内存*/
struct Student
{char name[20];int age;int id;
};
声明上述结构体类型对应的 结构体变量 :
// 在栈内存中 定义 Student 结构体 类型变量struct Student s1;
二、结构体类型别名
使用 typedef
关键字 , 定义结构体类型别名 , 可以直接使用 别名 结构体变量名
声明结构体类型变量 , 不需要在前面添加 struct
关键字 ;
/*** @brief The Teacher struct* 定义 结构体 数据类型 , 同时为该结构体类型声明 别名* 可以直接使用 别名 结构体变量名 声明结构体类型变量* 不需要在前面添加 struct 关键字*/
typedef struct Teacher
{char name[20];int age;int id;
}Teacher;
使用 结构体类型别名 定义 Teacher 结构体类型变量 :
// 使用类型别名 定义 Teacher 结构体类型变量Teacher t1;
三、结构体类型变量声明
1、使用结构体类型 ( 别名 ) 声明变量
使用 结构体类型 声明 结构体变量 , 如果没有别名 , 必须使用 struct 结构体类型 变量名
格式 , 声明结构体变量 ;
// 在栈内存中 定义 Student 结构体 类型变量struct Student s1;
如果结构体类型有别名 , 则可以使用 结构体类型别名 变量名
, 声明结构体变量 ;
// 使用类型别名 定义 Teacher 结构体类型变量Teacher t1;
2、 定义隐式结构体时声明变量
定义隐式结构体类型 , 没有结构体名称 , 在结构体结尾直接声明变量名 ;
// 定义隐式结构体类型 , 没有结构体名称
// 在结构体结尾直接声明变量名
struct
{char name[20];int age;int id;
}s2, s3;
3、定义普通结构体时声明变量
定义普通结构体类型的同时定义变量 , 普通的结构体类型后 , 声明结构体类型变量 ;
// III. 定义结构体类型的同时定义变量// 定义结构体类型的同时 , 定义结构体变量
// 普通的结构体类型后 , 声明结构体类型变量
struct Student2
{char name[20];int age;int id;
}s4, s5;
二、完整代码示例
完整代码示例 :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>/*** @brief The Student struct* 定义 结构体 数据类型 , 这是定义了 固定大小内存块别名* 此时还没有给 结构体 分配内存* 声明了 结构体类型 变量后 , 才会在 栈内存中为其分配内存* 使用 malloc 可以在堆内存中为其分配内存*/
struct Student
{char name[20];int age;int id;
};/*** @brief The Teacher struct* 定义 结构体 数据类型 , 同时为该结构体类型声明 别名* 可以直接使用 别名 结构体变量名 声明结构体类型变量* 不需要在前面添加 struct 关键字*/
typedef struct Teacher
{char name[20];int age;int id;
}Teacher;// II. 定义隐式结构体类型的同时定义变量// 定义隐式结构体类型 , 没有结构体名称
// 在结构体结尾直接声明变量名
struct
{char name[20];int age;int id;
}s2, s3;// III. 定义结构体类型的同时定义变量// 定义结构体类型的同时 , 定义结构体变量
// 普通的结构体类型后 , 声明结构体类型变量
struct Student2
{char name[20];int age;int id;
}s4, s5;/*** @brief main* @return*/
int main()
{// I. 用 类型 定义结构体变量// 在栈内存中 定义 Student 结构体 类型变量struct Student s1;// 使用类型别名 定义 Teacher 结构体类型变量Teacher t1;// 命令行不要退出system("pause");return 0;
}
【C 语言】结构体 ( 结构体类型定义 | 结构体类型别名 | 声明结构体变量的三种方法 | 栈内存中声明结构体变量 | 定义隐式结构体时声明变量 | 定义普通结构体时声明变量 )相关推荐
- 设置环境变量的三种方法【转载】
文章目录 1 设置环境变量的三种方法 1.1 临时设置 1.2 当前用户的全局设置 1.3 所有用户的全局设置 2 测试当前环境变量 3 脚本解析 3.1 打开的文件如下: 3.2 脚本解析说明 3. ...
- 处理数据中分类变量的三种方法(附代码实现)
本文是将kaggle Courses中 Categorical Variables | Kaggle进行了翻译并且加入自己的理解,如有地方不清楚,可以查阅原文 文章目录 介绍 三种方法 1)删除分类变 ...
- matlab 添加环境变量,CentOS 添加环境变量的三种方法
在 Linux CentOS 系统上安装完 MATLAB 后,为了使用方便,需要将 matlab 命令加到系统命令中,如果在没有添加到环境变量之前,执行"matlab"命令时,则会 ...
- 在事件代码中访问类中变量的三种方法
方法一: 加final 修饰符: 即:在事件处理类中需要访问类变量时,需要加final 方法二:将变量变成类的实例变量,但这种方法扩大了变量的作用范围 public class Helloworld{ ...
- 设置python环境变量的三种方法(pycharm)
在python项目实践中,不知道为什么我的os.getenv一直拿不到环境变量,于是我就试了三种设置环境变量的方法,中解决了问题. 一.系统变量设置 python环境变量的配置方法: 1.第一步在我们 ...
- R语言数据框中创建新的变量的三种方法
方法1 > mydata<-data.frame(x1=c(1,2,3,4),x2=c(5,6,7,8)) > mydata$sum<-mydata$x1+mydata$x2 ...
- Linux 中设置环境变量的三种方法
1.export 变量名=value 2.变量名=value ; export 变量名 3.declare -x 变量名=value 自定义全局环境变量 1.编辑 /etc/profile vim / ...
- Python交换两个变量的三种方法
一.借助于第三个变量(很常用) a = 5 b = 6c = 0 c = a a = b b = c print("a=%d,b=%d"%(a,b))#结果为:a=6,b=5 二. ...
- 如何创建哑变量?三种方法任选
1.为什么要设置哑变量 如果将分类变量直接纳入回归模型中,它将被自动识别为连续变量. 2.设置哑变量的个数 哑变量的个数=类别-1.如这里有三种水果:苹果为1.芒果为2.香蕉为3.此时我们需要设置2个 ...
最新文章
- python10后的年利率_用Python把20年的GDP、人口以及房价数据进行了可视化
- ZOJ 3829 Known Notation(贪心)
- 【J2ME 2D 游戏开发系列】◣HIMI游戏开发启蒙教程◢JAVA零基础学习J2ME游戏开发全过程!...
- 数据库实验四 用户权限管理
- Java解析JSON文件
- html中擦窗效果,纯CSS写的小雨打在窗户上效果
- 基于mfc的图形学实例_前端图形学(二十)——退后!!我要开始进入3D世界了...
- javscript 创建类的三种方法【转】
- python垃圾回收离职_垃圾回收gc.md
- 软件测试学习(二)测试用例例子、黑盒测试(一)
- linux-qcow2格式安装虚拟机及脚本一键克隆qcow2虚拟机
- java1.8 ojdbc14.jar_ojdbc14_g.jar与ojdbc14.jar区别
- 笔记本无线共享上网(网络是有线)
- dns污染怎么快速清除解决
- 正则表达式系列:匹配正数、负数和小数 (正负整数)
- UI/UE设计师修炼指南-CSDN公开课-专题视频课程
- 【2022/1/12】think-swoole使用教程
- Unity FPS帧数设置
- VOT-toolkit Python 版本使用教程--官方样例版
- 采用面向对象的方法来实现留言板的添加和删除功能