C语言基础 4

结构体

结构体定义

结构体是用户自定义的一种数据类型,结构体中包含了一组相关的不同的数据类型。结构体的声明包括关键字 ‘struct’
比如:

struct student{
	int student_id;
	char  student_name[30];
}; // 此处有分号,不能忽略

还有另外一种定义方法:

typedef struct student{
	int student_id;
	char  student_name[30];
}student;

这个结构体语句定义了一个新的数据类型,叫做学生;它包含了两个成员,也可以理解为属性(property)。结构体的成员可以是任何一种数据类型,包括字符串,数组,指针,甚至可以是另外的结构体。

结构体声明

要来声明一个结构体的数据类型,需要使用结构体的标签,然后是变量名称

struct 机构体名 变量名;

比如:

struct student{
	int student_id;
	char  student_name[30];
};
struct student s1;

结构体初始化和赋值

通过按顺序列出初始值的方法,结构体变量也可以初始化和赋值。
比如:

struct student s1 = {1320, "Andy"};
struct student s2 = {1321, "Keith"};

结构体具有结构体

结构体的成员也可以是可以是一个结构体
比如:

struct course{
	int course_code;
	char course_name[30];
};
struct student{
	int student_id;
	char student_name[30];
	struct course c1;
};

结构体student中具有三个成员,student_id, student_name, c1.

指针与结构体

就像指针指向变量一样,指针也可以被定义来指向结构体。
定义一个指针来指向结构体:

struct structure *struct_pointer;

用指针来存储结构体成员的地址

struct_pointer = &struct_var;

访问结构体成员的值,使用地址操作符 ‘->’

struct_pointer->struct_member;

结构体作为函数参数

函数的参数可以使用结构体来接受传递的参数。
对于更改结构体变量中实际值的函数,需要指针参数。
比如:

#include <stdio.h>
typedef struct {
	int student_id;
	char *student_name;
}student;

void change_name(student *s1, char new_name[10]){
	s1->student_name = new_name;
};
int main(){
	student *s1;
	s1->student_id = 1302;s1->student_name = "Andy";
	printf("The old name is %s\n",s1->student_name);
	change_name(s1,"Keith");
	printf("The new name is %s\n",s1->student_name);
	return 0;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值