C 教程

C 教程 C 语言简介 C 下载安装和环境配置 C 快速入门 C 语法 C 输出 C 注释 C 变量 C 数据类型 C 常量 C 运算符 C 布尔值 C If...Else 语句 C Switch 语句 C While 循环 C For 循环 C Break/Continue 语句 C 数组 C 字符串 C 用户输入 C 内存地址 C 指针

C 函数

C 函数 C 函数参数 C 作用域 C 函数声明 C 递归 C 数学函数

C 文件

C 创建文件 C 写入文件 C 读取文件

C 结构体

C 结构体 C 嵌套结构体 C 结构体和指针 C 联合体 C typedef

C 枚举

C 枚举

C 内存

C 内存管理

C 错误

C 错误 C 调试 C 空值 C 错误处理 C 输入验证

C 更多

C 日期 C 随机数 C 宏 C 代码组织 C 存储类 C 位运算符 C 固定宽度整数

C 项目

C 项目

C 参考资料

C 参考资料 C 关键词 C <stdio.h> C <stdlib.h> C <string.h> C <math.h> C <ctype.h> C <time.h>

C 标准库参考

C 标准库 - 参考手册 C 标准库 - <assert.h> C 标准库 - <ctype.h> C 标准库 - <errno.h> C 标准库 - <float.h> C 标准库 - <limits.h> C 标准库 - <locale.h> C 标准库 - <math.h> C 标准库 - <setjmp.h> C 标准库 - <signal.h> C 标准库 - <stdarg.h> C 标准库 - <stddef.h> C 标准库 - <stdio.h> C 标准库 - <stdlib.h> C 标准库 - <string.h> C 标准库 - <time.h>

C 实例

C 语言实例 C 经典100例 C 编译器 C 测验


C 结构体和指针

结构体和指针

你可以使用指针来处理结构体,从而提高代码效率,尤其是在将结构体传递给函数或更改其值时。

要使用指向结构体的指针,只需添加 * 符号,就像使用其他数据类型一样。

要访问其成员,您必须使用 -> 运算符,而不是点 . 语法:

示例

// 定义一个结构体
struct Car {
  char brand[30];
  int year;
};

int main() {
  struct Car car = {"Toyota", 2020};

  // 声明一个指向该结构体的指针
  struct Car *ptr = &car;

  // Access members using the -> operator
  printf("Brand: %s
", ptr->brand);
  printf("Year: %d
", ptr->year);

  return 0;
}

亲自试一试 »


将结构体指针传递给函数

以下是如何将结构体指针传递给函数并更改其值的方法:

示例

struct Car {
  char brand[30];
  int year;
};

// 该函数接受一个指向 Car 结构体的指针,并更新年份。
void updateYear(struct Car *c) {
  c->year = 2025;  // Change the year
}

int main() {
  struct Car myCar = {"Toyota", 2020};

  updateYear(&myCar);  // 传递一个指针,以便函数可以更改年份。

  printf("Brand: %s
", myCar.brand);
  printf("Year: %d
", myCar.year);

  return 0;
}

亲自试一试 »


为什么要使用结构体指针?

在以下情况下,使用结构体指针会很有帮助:

  • 你想避免复制大量数据。
    与其复制整个结构体,不如只传递一个指针。这样可以加快程序运行速度并减少内存占用。
  • 你想在函数内部修改值。
    如果你将指向结构体的指针传递给函数,该函数就可以修改原始值。
  • 你想使用内存分配动态创建结构体。
    使用指针,你可以使用 malloc() 在程序运行时创建结构体。
    你将在后面的章节中学习更多关于 内存管理 的内容。

提示: 如果您正在处理大型程序或大量值,结构体指针可以帮助您编写更简洁、更高效的代码。