c结构体
更多
在 C 语言中,结构体(Struct) 是一种用户自定义的复合数据类型,用于将多个不同类型的变量组合成一个逻辑单元。以下是关键概念的中文详解:
1. 定义结构体
使用 struct 关键字定义模板:
// 定义名为 "Person" 的结构体类型
struct Person {
char name[50]; // 字符串成员
int age; // 整型成员
float height; // 浮点型成员
};
2. 声明结构体变量
基于定义的类型创建变量:
// 方式1:先定义类型,再声明变量
struct Person person1;
// 方式2:定义类型时直接声明变量
struct Student {
int id;
char major[30];
} student1, student2; // 同时声明 student1 和 student2
3. 访问结构体成员
使用 . 运算符访问成员:
// 赋值
strcpy(person1.name, "张三");
person1.age = 25;
person1.height = 1.75;
// 读取
printf("姓名: %s, 年龄: %d\n", person1.name, person1.age);
4. 结构体指针
通过指针访问成员需使用 -> 运算符:
struct Person *ptr = &person1;
ptr->age = 26; // 等价于 (*ptr).age = 26
printf("年龄: %d\n", ptr->age);
5. 初始化结构体
声明时可直接初始化:
struct Person person2 = {"李四", 30, 1.80};
6. 结构体嵌套
结构体可包含其他结构体:
struct Address {
char city[50];
char street[100];
};
struct Employee {
char name[50];
struct Address addr; // 嵌套结构体
};
// 使用
struct Employee emp = {"王五", {"北京", "中关村大街"}};
printf("城市: %s\n", emp.addr.city);
7. typedef 简化类型名
用 typedef 创建别名,避免重复写 struct:
typedef struct Person {
char name[50];
int age;
} Person; // 别名 Person
// 声明变量
Person p1; // 无需写 struct Person
8. 结构体大小与内存对齐
- 结构体大小由成员大小和内存对齐规则决定。
- 使用
sizeof获取大小:printf("Person 大小: %zu 字节\n", sizeof(struct Person));
应用场景
- 表示复杂实体(如学生、商品、坐标点)。
- 组合相关数据,提高代码可读性。
- 构建链表、树等数据结构。
示例代码
#include <stdio.h>
#include <string.h>
typedef struct {
char name[50];
int age;
} Student;
int main() {
Student stu;
strcpy(stu.name, "小明");
stu.age = 18;
Student *ptr = &stu;
printf("学生: %s, 年龄: %d\n", ptr->name, ptr->age);
return 0;
}
输出:
学生: 小明, 年龄: 18
结构体是 C 语言中组织和管理数据的核心工具之一,理解其用法对开发复杂程序至关重要。
STC89C52的结构体
C51程序设计有时需要将一批基本类型的数据放在一起使用,从而引入了所谓构造类型数据,前面学习的数据就是一种构造类型的数据,一个数组实际上是一批顺序存放的相同类型数据。结构
资料下载
王磊
2021-11-25 16:06:05
Keil使用结构体数组的奇怪问题
今天用keil的时候发现一个很奇怪的点,是关于结构体数组的。首先说明我的keil版本是:V5.28.0.0问题是这样的:我在a.h文件定义了一个结构
资料下载
李艳
2021-11-21 16:36:04
【干货】c语言基础语法——结构体
1、关于C语言结构体的引入在实际问题中有时候我们需要几种数据类型一起来修饰某个变量。例如一个学生的信息就需要学号(字符串),姓名(字符串),年龄
2019-06-03 17:10:15
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览
相关标签