结构体指针,与结构体引用,赋值变化
时间: 2024-09-20 20:11:23 浏览: 35
在C/C++语言中,结构体指针和结构体引用都是用于处理复杂数据类型的工具。
**结构体指针**:
结构体指针是一个变量,它存储的是另一个结构体的内存地址。当我们声明一个结构体指针并将其初始化为一个结构体实例的地址时,可以间接访问该结构体的所有成员。例如:
```c++
struct Person {
char name[50];
int age;
};
Person* p; // 定义一个指向Person结构体的指针
p = &person; // 将p指向person结构体实例
// 通过指针操作结构体成员
p->name = "Alice";
p->age = 30;
```
当你改变指针所指向的结构体的内容时,实际上是改变了原始结构体的状态。
**结构体引用**:
结构体引用更像结构体的别名,它是实际结构体的一个快捷途径。一旦引用被初始化,就不能再指向其他结构体。它的优点是可以直接修改引用所关联的结构体,无需解引用操作。声明和使用方式类似:
```c++
Person person;
Person& ref = person; // 定义一个引用ref,它直接绑定到person
ref.name = "Bob";
ref.age = 35; // 直接修改person的成员
```
**赋值的变化**:
当给指针赋新值时,原指针会丢失对原有结构体的连接,指向新的结构体实例。如果是指引,则不会改变引用的目标,只是覆盖了原有的引用名。例如:
```c++
Person anotherPerson;
p = &anotherPerson; // 现在p指向anotherPerson
```
在这里,`p`原本指向`person`,现在改指`anotherPerson`,`person`和`anotherPerson`是两个独立的结构体实例。
阅读全文