2024.1.2C语言 结构

一.结构的定义

1.概念

在C语言中,结构是一种用户自定义的数据类型,它允许您将多个不同类型的数据组合成一个单一的数据类型,如

struct student {
	int num;//学号
	char name[10];//姓名
	int computer, english, math;//3门课程成绩
	double average;//个人平均成绩
};//一定一定要记得加;

包含多种数据类型,可看出结构是C语言中一种新的构造数据类型,它能把有内在联系的不同数据类型汇聚成一个整体,使他们相互关联;同时,结构又是一个变量的集合,可以对其成员单独操作(同基本数据类型操作).

2.定义

struct  结构名{//结构类型名

        类型名 结构成员名1;

        类型名 结构成员名2;//结构分量

                        ...

        类型名 结构成员名n;

};//看做一条语句,结束要加;

struct为关键字,后自行命名一个结构名(合法标识符)

3.结构的嵌套定义

一个大的实体包含多个成员,每个成员又可能包含更小的成员,这样就需要结构的嵌套

struct address {//定义地址结构
	char city[10];
	char street[20];
	int code;
	int zip;
};
struct student {
	int num;
	char name[10];
	struct address addr;//定义通信地址成员
	int computer, english, math;
	double average;
};

结构类型 struct student的成员变量addr被定义成结构类型struct address,而struct address又包含了4个成员,即一个结构的成员被定义成了另一个结构类型.

二.结构变量的定义和初始化

同基本数据类型一样,需要定义结构类型的变量才能使用.

如:struct student stu,max;定义了结构变量 stu,max;数据类型都为struct student

 1.定义
(1)单独定义

先定义一个结构类型,在定义这种类型的变量

struct Student {  
    char name[50];  
    int age;  
    float score;  
};  
  
struct Student s1, s2;
(2)混过定义

定义结构类型的同时定义结构变量

struct Student {  
    char name[50];  
    int age;  
    float score;  
} s1, s2;
2.结构变量的使用

利用结构成员操作符"."来引用结构成员

结构变量名.结构成员名,如stu.num  stu.name

在C语言中,对结构成员的使用方法与同类型的变量完全相同

如:stu.num=100;strcpy(stu.name,"zhang");

对嵌套结构成员的引用方法和一般成员的引用方法类似

#include <stdio.h>  
  
struct Inner {  
    int inner_data;  
};  
  
struct OuterStruct {  
    int outer_data;  
    struct Inner inner; // 定义嵌套结构成员  并给被嵌套的结构命名为 inner
};  
  
int main() {  
    struct OuterStruct outer;  //给这个嵌套结构命名为outer
    outer.outer_data = 10;  //对结构outer中的outer_data用.操作
    outer.inner.inner_data = 20;  //对结构outer中的结构inner操作,故用两次.
  
    printf("outer_data: %d\n", outer.outer_data);  
    printf("inner_data: %d\n", outer.inner.inner_data);  
  
    return 0;  
}
3.结构变量的整体赋值

如果两个结构变量具有相同的类型,则允许将一个结构变量的值直接赋给另一个.赋值时一一对应.

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值