结构体基础全家桶(1)创建与初始化

目录

结构体概念:

结构体类型:

结构体变量的创建:

定义结构体变量的三种方式:

结构体变量的引用:

结构体变量的初始化:

结构体数组:

结构体数组定义:

结构体数组初始化:

结尾:下集预告

前往下集:


结构体概念:

C语言允许用户创建这样一个结构数据:它由多种类型的数据结合成一个整体,以便引用;这样一
整体​​​​​被称为结构体。结构体中的数据相互关联,便于用户引用。

结构体类型:

结构体的一般形式如下:
struct 结构体名
{成员列表};
  • 1.结构体的标志:struct, 表明这是一个结构体类型。
  • 2.结构体的名称:用作结构体的标志,又称结构体标记。
  • 3.成员列表:结构体的组成部分,其中的成员共同构成结构体。成员由成员类型(int 、char等)和名称(自己给它起的名字)构成。

注意:结构体的成员可以是结构体,也就是结构体内嵌结构体。

结构体变量的创建:

那么让我们先创建一个结构体出来看看:

struct student//结构体名
{
    int num;//结构体成员
    char name[20];
    char sex;
    int age;
    float score;
    char addr[30];
};

这里我们创建了一个结构体,但是其并没有储存任何数据,也就是没有太多意义。接下来我们需要对其进行初始化。

定义结构体变量的三种方式:

  • 1.先声明结构体类型在定义变量名:如上我们已经定义了一个结构体类型:struct student,我们可以用它来定义变量。
struct student{  //结构体类型名
    ...
    ...
    ...
}student1, student2 //结构体变量名
  • 2.在声明类型的同时定义变量:
struct 结构体名
{
    成员表列
}变量名表列;
  • 3.直接定义结构类型变量:即不出现结构体名
    struct
    {
        成员表列
    }变量名表列;

    但是这样会导致结构体只能使用一次。

结构体变量的引用:

知道结构体怎样创建后,我们需要了解一下结构体的变量如何引用:

这里我们需要先介绍一下”."成员运算符号,它在所有运算符号中优先等级最高。意思是找到结构体中的该成员。

  • 1.不能将一个结构体变量作为一个整体输入和输出,我们只能对结构变量中的各个成员分别进行输入和输出。其方法为:
结构体变量名.成员名
stdent1.age
student2.name
//结合上面我们创建的结构变量
  • 2.如果成员本身又属一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一级的成员。只能对最低的成员进行赋值或存取以及运算。例如:
strct date{
      int month;
      int day;
}brithday;

struct student
{
    char name[20];
    int age;
    struct date birthday;
}student1;
//定义:
student1.brithday.month
  • 3.可以引用结构体变量成员的地址,也可以引用结构体变量的地址。
    scanf("%d", &student1.num);// 输入 student1.num 的值
    printf("%p", &student1);// 输出 student1 的首地址

    但不能用以下语句整体读入结构体变量如:

    scanf("%d,%s,%c,%d,%f,%s", &student1);

    结构体变量的地址主要用于作函数参数,传递结构体的地址。

结构体变量的初始化:

结构体初始化主要是在对结构体进行定义时,对我们自己定义的结构体变量成员赋值。
struct student {

	int num;
	char nam[20];
	char sex;
	int age;
}wang1={10,"wang",'n',20};

结构体数组:

没错结构体也有数组!!当我们需要对一个类型的结构体进行多次使用时,我们可以用结构体数组来使代码的书写更加方便,提高代码的可读性。

结构体数组定义:

和普通数组的定义相似,结构体数组也是先声明单个数组元素的类型,然后表明其为数组。
  • 1.间接定义,先定义单个结构体,再定义结构体:
struct student {

	int num;
	char nam[20];
	char sex;
	int age;
}wang1={10,"wang",'n',20};

struct student arr[3];

int main()
{
	arr[1].age = 10;//定义

	return 0;
}
  • 当然我们还有另一种方式进行定义:直接定义:
struct student {

	int num;
	char nam[20];
	char sex;
	int age;
}arr2[3];

结构体数组初始化:

与其它数组初始化类似:
struct student {

	int num;
	char nam[20];
	char sex;
	int age;
}arr2[3] = {
	{20,"asd",'n',50},
    {100,"fgh",'a',100},
{200,"asd",'b',300}
};

结尾:下集预告

这篇文章就讲到这里下一篇我们将会讲述结构体指针的创建与应用,对于指针大家可以先看这篇文章进想了解:

[小白都爱的指针入门理解 ]

前往下集:

【结构体基础全家桶(2)结构体指针 】http://t.csdnimg.cn/hUCsb

愿你激流勇进之时,不忘孤芳自赏

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值