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() 创建结构体。
您将在后面的章节中学习更多关于内存管理的知识。
提示:如果您正在处理大型程序或大量值,结构体指针可以帮助使您的代码更简洁、更高效。