C语言中建立数据类型-定义结构体类型变量-学习笔记-45

引入

前面,我们讲了如何建立一个结构体类型,但是并没有定义变量,系统也不分配具体的内存单元。我们可以采用以下3种方法定义结构体类型变量。

先声明结构体类型,再定义该类型变量

没有这个类型,就声明这个类型,然后再定义这个类型的变量。这种声明方式最常用和简单,声明和定义分离,声明后可以随时定义变量,比较灵活。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
int main(){
struct Student{
int num;
char name[20];
char sex;
int age;
};

struct Student student_1,student_2;
//定义 student 结构体类型的变量
int student_1,student_2;
//和普通定义整型变量很像,struct Student 就等同于 int
}

定义了 student_1 和 student_2 具有 struct Student 类型的结构。即也有学号、姓名、性别、年龄等成员。

定义结构体变量后,系统会为之分配内存单元。

在声明类型的同时定义变量

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main(){
struct Student{
int num;
char name[20];
char sex;
int age;
} student_1,student_2;
//上面这种定义方式,和第一种相同,
}

这种定义方式的原型为:

struct 结构体名
{
成员表列
} 变量名表列:

这种方式在写小程序的时候比较清晰,但是在写大程序的时候,往往还是声明和定义分开,所以这种方法用的不多。

不指定类型名而直接定义结构体类型变量

一般形式为:

struct {
成员列表
}变量名表列;

我们看到,上面并没有结构体名,所以我们无法分离的在后面根据结构体名定义变量,所以变量采用上面的定义方式,直接在声明变量的同时,定义变量。这种方式用的很少。

说明

  1. 结构体类型和结构体变量是不同的概念,类型是类型,变量是变量。变量是赋值和存取的。类型则不能。编译时类型不分配存储空间,变量是分配空间的。
  2. 结构体中的成员名可以与程序中其他变量名相同,例如int a; 中的 a,也可以作为结构体变量的成员名来使用。
  3. 结构体变量中的成员(域)可以单独使用,作用和地位同普通变量相似。我们下节进行介绍。

尾巴

这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。


-------------The End-------------
欢迎请我喝咖啡哦~!