C++ 指向结构体的指针
在 C++ 中,结构体是一种用户自定义的数据类型,可以将不同种类的数据组合到一个结构体中,便于管理和操作。而指针是一种特殊的变量,它存储的是内存地址,可以通过指针来访问和修改内存中的数据。将指针与结构体结合使用,可以实现对结构体的灵活操作。本文将详细介绍 C++ 中指向结构体的指针的使用。
1. 定义结构体
在开始讲解指向结构体的指针之前,我们先来了解一下如何定义并使用结构体。
结构体的定义使用 struct
关键字,后接结构体的名称和花括号内的成员变量。下面是一个简单的示例:
运行上述代码,输出如下:
在上述示例中,我们定义了一个名为 Person
的结构体,它有两个成员变量 name
和 age
。然后在 main
函数中,创建了一个 Person
类型的变量 p1
,并通过 .
操作符访问和修改了结构体的成员变量。
2. 指向结构体的指针
指向结构体的指针是指针变量,它存储的是结构体的地址。通过指针可以方便地操作结构体,例如访问和修改结构体的成员变量。
为了定义指向结构体的指针,需要在指针类型前加上 struct
关键字和结构体的名称。下面是一个示例:
运行上述代码,输出与之前相同:
在上述示例中,我们首先定义了一个名为 ptr
的指向 Person
结构体的指针。然后,将 p1
的地址赋值给指针变量 ptr
,即 ptr = &p1;
。接下来,我们使用 ->
操作符通过指针来访问和修改结构体的成员变量。
3. 动态分配结构体内存
在 C++ 中,可以使用 new
运算符动态分配内存来创建结构体的实例。动态分配的结构体实例会在堆上分配内存,可以通过指针来访问和操作。
下面是一个示例代码:
运行上述代码,输出如下:
在上述示例中,我们使用 new
运算符动态分配了一个 Person
结构体的实例,并将其地址赋值给指针变量 ptr
。然后,通过指针变量 ptr
来访问和修改结构体的成员变量。最后,使用 delete
运算符释放动态分配的内存。
4. 指向结构体的指针数组
在实际应用中,可能会需要存储多个结构体实例,并使用指针数组来管理这些实例。指针数组是指数组中的每个元素都是指针。通过指针数组,可以方便地对多个结构体实例进行操作。
下面是一个示例代码:
运行上述代码,输出如下:
在上述示例中,我们首先定义了一个大小为 size
的指针数组 ptrArr
,其中每个元素都是 Person
结构体的指针。然后,使用循环动态分配了 size
个 Person
结构体实例,并通过指针数组来访问和修改每个实例的成员变量。最后,使用循环来释放动态分配的内存。
5. 结构体指针作为函数参数
结构体指针还可以作为函数的参数传递,从而可以在函数内部对结构体进行修改。通过传递指针而不是结构体的副本,可以提高程序的性能和效率。
下面是一个示例代码: