登录/注册

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. 结构体大小与内存对齐


应用场景

示例代码

#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 语言中组织和管理数据的核心工具之一,理解其用法对开发复杂程序至关重要。

C语言结构使用

型的数据组合。 结构体的声明与定义 结构体的声明一般形式为:

2025-11-12 08:30:27

C语言和C++中结构的区别

同样是结构体,看看在C语言和C++中有什么区别?

2024-10-30 15:11:20

C语言中数组和结构的内存表示和布局

C语言中,数组和结构体都可以代表一块内存,但为什么结构

2023-08-28 10:54:30

C语言程序设计第四讲结构化程序设计之选择

C语言程序设计第四讲结构化程序设计之选择

资料下载 ah此生不换 2021-12-22 10:34:31

FreeRTOS消息队列 传递结构指针和结构异同

FreeRTOS消息队列 传递结构体指针和结构体异同

资料下载 佚名 2021-12-08 12:06:10

STC89C52的结构

C51程序设计有时需要将一批基本类型的数据放在一起使用,从而引入了所谓构造类型数据,前面学习的数据就是一种构造类型的数据,一个数组实际上是一批顺序存放的相同类型数据。结构

资料下载 王磊 2021-11-25 16:06:05

干货|手把手教你写单片机的C语言结构

摘要:听说还有好多学单片机的小伙伴不会用结构体?指针和结构体是学单片机必

资料下载 佚名 2021-11-23 17:51:31

Keil使用结构数组的奇怪问题

今天用keil的时候发现一个很奇怪的点,是关于结构体数组的。首先说明我的keil版本是:V5.28.0.0问题是这样的:我在a.h文件定义了一个结构

资料下载 李艳 2021-11-21 16:36:04

C语言结构完全笔记

我们刚刚申请了一个名叫Info的结构体类型,那么理论上我们可以像声明其他变量的操作一样,去声明我们的结构体操作,但是

2023-08-01 16:52:23

C语言入门之结构指针

在C语言中,指向结构体对象的指针变量既可以指向结构

2023-03-24 14:59:54

结构基本用法详解

  结构体就是把相同或者不同类型的便利放到一起,这和C++中的类很像,但没有c

2023-02-15 14:52:56

C语言-结构与位域

C语言里的结构体是可以包含不同数据类型和相同数据类型的一个有序集合,属于构造类型,可以自己任意组合,并且

2022-08-14 10:06:33

怎样去使用C语言的结构和共用

C语言的结构体和共用体分别有何特点呢?怎样去使用

2022-01-17 07:51:08

C语言结构的区别

结构体在使用其某成员变量时用:结构体名.

2020-03-24 03:27:21

【干货】c语言基础语法——结构

1、关于C语言结构体的引入在实际问题中有时候我们需要几种数据类型一起来修饰某个变量。例如一个学生的信息就需要学号(字符串),姓名(字符串),年龄

2019-06-03 17:10:15
7天热门专题 换一换
相关标签