文章目录

  • 一、结构体类型定义
  • 二、结构体类型别名
  • 三、结构体类型变量声明
    • 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 临时设置 1.2 当前用户的全局设置 1.3 所有用户的全局设置 2 测试当前环境变量 3 脚本解析 3.1 打开的文件如下: 3.2 脚本解析说明 3. ...

  2. 处理数据中分类变量的三种方法(附代码实现)

    本文是将kaggle Courses中 Categorical Variables | Kaggle进行了翻译并且加入自己的理解,如有地方不清楚,可以查阅原文 文章目录 介绍 三种方法 1)删除分类变 ...

  3. matlab 添加环境变量,CentOS 添加环境变量的三种方法

    在 Linux CentOS 系统上安装完 MATLAB 后,为了使用方便,需要将 matlab 命令加到系统命令中,如果在没有添加到环境变量之前,执行"matlab"命令时,则会 ...

  4. 在事件代码中访问类中变量的三种方法

    方法一: 加final 修饰符: 即:在事件处理类中需要访问类变量时,需要加final 方法二:将变量变成类的实例变量,但这种方法扩大了变量的作用范围 public class Helloworld{ ...

  5. 设置python环境变量的三种方法(pycharm)

    在python项目实践中,不知道为什么我的os.getenv一直拿不到环境变量,于是我就试了三种设置环境变量的方法,中解决了问题. 一.系统变量设置 python环境变量的配置方法: 1.第一步在我们 ...

  6. R语言数据框中创建新的变量的三种方法

    方法1 > mydata<-data.frame(x1=c(1,2,3,4),x2=c(5,6,7,8)) > mydata$sum<-mydata$x1+mydata$x2 ...

  7. Linux 中设置环境变量的三种方法

    1.export 变量名=value 2.变量名=value ; export 变量名 3.declare -x 变量名=value 自定义全局环境变量 1.编辑 /etc/profile vim / ...

  8. Python交换两个变量的三种方法

    一.借助于第三个变量(很常用) a = 5 b = 6c = 0 c = a a = b b = c print("a=%d,b=%d"%(a,b))#结果为:a=6,b=5 二. ...

  9. 如何创建哑变量?三种方法任选

    1.为什么要设置哑变量 如果将分类变量直接纳入回归模型中,它将被自动识别为连续变量. 2.设置哑变量的个数 哑变量的个数=类别-1.如这里有三种水果:苹果为1.芒果为2.香蕉为3.此时我们需要设置2个 ...

最新文章

  1. python10后的年利率_用Python把20年的GDP、人口以及房价数据进行了可视化
  2. ZOJ 3829 Known Notation(贪心)
  3. 【J2ME 2D 游戏开发系列】◣HIMI游戏开发启蒙教程◢JAVA零基础学习J2ME游戏开发全过程!...
  4. 数据库实验四 用户权限管理
  5. Java解析JSON文件
  6. html中擦窗效果,纯CSS写的小雨打在窗户上效果
  7. 基于mfc的图形学实例_前端图形学(二十)——退后!!我要开始进入3D世界了...
  8. javscript 创建类的三种方法【转】
  9. python垃圾回收离职_垃圾回收gc.md
  10. 软件测试学习(二)测试用例例子、黑盒测试(一)
  11. linux-qcow2格式安装虚拟机及脚本一键克隆qcow2虚拟机
  12. java1.8 ojdbc14.jar_ojdbc14_g.jar与ojdbc14.jar区别
  13. 笔记本无线共享上网(网络是有线)
  14. dns污染怎么快速清除解决
  15. 正则表达式系列:匹配正数、负数和小数 (正负整数)
  16. UI/UE设计师修炼指南-CSDN公开课-专题视频课程
  17. 【2022/1/12】think-swoole使用教程
  18. Unity FPS帧数设置
  19. VOT-toolkit Python 版本使用教程--官方样例版
  20. 采用面向对象的方法来实现留言板的添加和删除功能

热门文章

  1. AI助力劳保防护装备穿戴监测,为企业安全生产保驾护航
  2. 人间不正经生活语录(二)
  3. html5新语义化标签
  4. 小红书编辑器_小红书如何运营一个月涨粉5000+呢?
  5. SMT Solver-Z3入手教程
  6. Android 沉浸式风格(为毛叫沉浸式这么唬人)
  7. string类型空格判断
  8. 知识图谱neo4j入门教程
  9. Tomcat的详解和使用
  10. IDEA构建VUE脚手架