【C语言】初步认识结构体

1.结构体诞生的由来

C语言已经提供了内置类型,如:char、short、int、long、float、double等,但是只有这些内置类型还是不够的,假设我想描述学生,描述⼀本书,这时单一的内置类型是不行的。描述⼀个学生需要名字、年龄、学号、身高、体重等;描述⼀本书需要作者、出版社、定价等。C语言为了解决这个问题,增加了结构体这种自定义的数据类型,让程序员可以自己创造适合的类型。

 结构是一些值的集合,这些值称为成员变量结构的每个成员可以是不同类型的变量,如:
标量、数组、指针,甚至是其他结构体。 

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

//代码1:变量的定义
struct Point
{
	int x;
	int y;//x,y是成员变量
}p1; //声明类型的同时定义变量p1
struct Point p2; //定义结构体变量p2

//代码2:初始化。
struct Point p3 = { 10, 20 };
struct Stu //类型声明
{
	char name[15]; //名字
	int age; //年龄
};
struct Stu s1 = { "zhangsan", 20 }; //初始化
struct Stu s2 = { .age = 20, .name = "lisi" }; //指定顺序初始化

//代码3
struct Node
{
	int data;
	struct Point p;
	struct Node* next;
}n1 = { 10, {4,5}, NULL }; //结构体嵌套初始化
struct Node n2 = { 20, {5, 6}, NULL }; //结构体嵌套初始化

 3.结构体成员的直接访问

结构体成员的直接访问是通过点操作符(.)访问的。点操作符接受两个操作数

使用方式:结构体变量.成员名

如:

#include <stdio.h>
struct Point
{
	int x;
	int y;
}p = { 1,2 };
int main()
{
	printf("x: %d y: %d\n", p.x, p.y);
	return 0;
}

4.结构成员的间接访问

有时候我们得到的不是一个结构体变量,而是得到了一个指向结构体的指针。

使用方式:结构体指针->成员名

如下所示:

#include <stdio.h>
struct Point
{
	int x;
	int y;
};
int main()
{
	struct Point p = { 3, 4 };
	struct Point* ptr = &p;
	ptr->x = 10;
	ptr->y = 20;
	printf("x = %d y = %d\n", ptr->x, ptr->y);
	return 0;
}

综合举例:

#include <stdio.h>
#include <string.h>
struct Stu
{
	char name[15]; //名字
	int age; //年龄
};
void print_stu(struct Stu s)
{
	printf("%s %d\n", s.name, s.age);
}
void set_stu(struct Stu* ps)
{
	strcpy(ps->name, "李四");
	ps->age = 28;
}
int main()
{
	struct Stu s = { "张三", 20 };
	print_stu(s);
	set_stu(&s);
	print_stu(s);
	return 0;
}

只有一点小小归纳,希望能帮到大家!

如果大家发现知识点错误的话,请帮忙指出,十分感谢!!

也请大家帮忙点赞、评论,这将督促我前行,大家一起加油!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值