C语言结构体始化笔记

结构体定义

C 数组允许定义可存储相同类型数据项的变量,结构体是 C 中另一种用户自定义的可用数据类型,它允许存储不同类型的数据项。
C语言中结构体数组的定义为:

struct 结构体名 {
	成员1
	成员2
	...
};

其中结构体成员可以是基本类型(int a)、数组(int[] b)和结构体类型(struct BOOK book)。定义结构体还有这几种变形:

// 只定义结构体
struct PERSON {
	char name[10];
	int age;
	int data[10];
};

// 定义结构体同时定义结构体变量
struct PERSON {
	char name[10];
	int age;
	int data[10];
} person;

// 使用匿名结构体来定义一个结构体变量person
struct{
	char name[10];
	int age;
	int data[10];
} person;

如果在定义结构体时创建了结构体变量,则可以直接进行初始化;否则需要创建结构体变量,可以使用下列语句创建。

struct PERSON person;

为了简化结构体变量的创建,还可以使用typedef关键字来创建结构体。

typedef struct PERSON {
	char name[10];
	int age;
	int data[10];
} Person;

// 这种方式下,创建结构体变量就不需要加上“struct”。
Person person;

结构体初始化

在C语言中,结构体使用之前最好初始化,避免随机值。结构体变量的初始化有这几种方式:
(1)在定义结构体时初始化

struct PERSON {
	char name[10];
	int age;
	int data[10];
} person = {"Tom", 18, {}}; // 这里使用{},默认data所有元素为0

使用大括号包裹初始化的值,如果结构体内部包含数组,则数组的元素需要同样使用大括号包裹。

typedef struct PERSON {
	char name[10];
	int age;
	int data[10];
} Person;

Person person = {"Tom", 18, {}};

总的来说,统一赋值只能够在结构体变量定义时进行。

(2)定义完结构体变量后一个元素一个元素初始化(注:一个数组直接整体赋值给另一个数组会报错)

struct PERSON {
	char name[10];
	int age;
	int data[10];
} person;
person.name[0] = 'T';
person.age = 18;
person.data[0] = 1;

// 如果需要整个数组赋值可以使用memcpy
memcpy(person.data, source_data, sizeof(source_data));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值