C 语言 - 结构体与指针

结构体与指针

您可以对结构体使用指针,以使代码更高效,特别是在将结构体传递给函数或更改其值时。

要使用指向结构体的指针,只需像处理其他数据类型一样,在声明时添加 * 符号即可。

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

实例

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

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

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

  // 使用 -> 运算符访问成员
  printf("Brand: %s\n", ptr->brand);
  printf("Year: %d\n", ptr->year);

  return 0;
}

亲自试一试

将结构体指针传递给函数

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

实例

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

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

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

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

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

  return 0;
}

亲自试一试

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

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

您希望避免复制大量数据

无需复制整个结构体,只需传递一个指针即可。这使您的程序运行更快,并使用更少的内存。

您希望在函数内部更改值

如果将指向结构体的指针传递给函数,该函数可以更改原始值。

您希望使用内存分配动态创建结构体

通过指针,您可以在程序运行时使用 malloc() 创建结构体。

您将在后面的章节中学习更多关于内存管理的知识。

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