C语言的结构体详细介绍

一.结构体的声明和成员类型

所谓结构,就是一些值的集合,这些值被称为成员变量。结构的每个成员都可以是不同类型的变量,可以是标量、数组、指针,甚至是其他结构体。结构体的声明框架如下:

struct tag//结构体标签名称
{
	member-list; //结构中的成员列表
}variable-list;//变量列表

举个简单的例子,假设我们要描述一个运动员的姓名,编号,年龄,性别还有成绩时,可以这样来声明一个结构体。

struct Stu 
{
	char name[20];//姓名   
	char id[20];//编号
	int age;//年龄    
	char sex[5];//性别    
	int result;//成绩
};//切记此处分号不能丢

当然在一些特殊结构体声明的时候,也可以进行不完全的声明,例如:

struct
{    
	int a;    
	char b;    
	float c; 
}x;
struct {    
	int a;   
	char b;    
	float c; 
}a[20], *p;

这两个结构体在声明的时候都忽略了结构体标签(tag),那么 p = &x 合法吗?答案是不合法。由于在结构体声明时,缺少了标签,只有 struct ,那么编译器就会把上面的两个声明当成完全不同的类型。而这种不完全声明的结构体被称为匿名结构体类型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
结构体(struct)是C语言中的一种用户自定义数据类型,它允许我们将多个不同类型的数据项组合在一起,形成一个新的复合数据类型。 结构体的定义使用关键字`struct`,后面跟着结构体的名称,然后是一对花括号{}包围的成员变量列表。每个成员变量由其数据类型和名称组成,中间用分号分隔。 例如,下面是一个表示学生的结构体定义: ```c struct Student { char name[50]; int age; float gpa; }; ``` 在上面的例子中,我们定义了一个名为Student的结构体,它包含了三个成员变量:name(字符数组类型)、age(整型)和gpa(浮点型)。 要使用结构体,我们可以声明结构体变量,并为其成员赋值。例如: ```c struct Student s; strcpy(s.name, "John"); s.age = 20; s.gpa = 3.8; ``` 我们也可以在声明结构体变量的同时进行初始化: ```c struct Student s = {"John", 20, 3.8}; ``` 使用结构体变量时,我们可以通过成员运算符`.`来访问结构体的成员变量: ```c printf("Name: %s\n", s.name); printf("Age: %d\n", s.age); printf("GPA: %.2f\n", s.gpa); ``` 结构体还可以作为函数的参数和返回值。例如,下面是一个接收和返回结构体的函数的示例: ```c struct Point { int x; int y; }; struct Point addPoints(struct Point p1, struct Point p2) { struct Point result; result.x = p1.x + p2.x; result.y = p1.y + p2.y; return result; } ``` 在使用结构体时,需要注意内存对齐和结构体大小的问题,以及如何使用指针来操作结构体等高级特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值