结构体变量访问元素和结构体指针访问元素
#include <iostream>
#include <string>
// 定义一个结构体类型Person
struct Person {
std::string name;
int age;
};
// 定义一个结构体类型Point
struct Point {
int x;
int y;
};
int main() {
// 创建一个Person结构体变量p1
Person p1;
p1.name = "Alice";
p1.age = 30;
// 访问结构体变量的成员
std::cout << "Person's name: " << p1.name << std::endl;
std::cout << "Person's age: " << p1.age << std::endl;
// 创建一个指向Person的指针p2,并分配内存
Person *p2 = new Person;
p2->name = "Bob";
p2->age = 25;
// 通过指针访问结构体成员
std::cout << "Person's name: " << p2->name << std::endl;
std::cout << "Person's age: " << p2->age << std::endl;
// 创建一个Point结构体变量pt
Point pt = {10, 20};
// 创建一个指向Point的指针ptr
Point *ptr = &pt;
// 创建一个指向Point指针的指针pptr
Point **pptr = &ptr;
// 使用指针访问结构体变量pt的成员
std::cout << "\nPoint's x value: " << ptr->x << std::endl;
std::cout << "Point's y value: " << ptr->y << std::endl;
// 使用指向指针的指针访问结构体变量pt的成员
std::cout << "Point's x value via pointer to pointer: " << (*pptr)->x << std::endl;
std::cout << "Point's y value via pointer to pointer: " << (*pptr)->y << std::endl;
// 释放p2指向的内存
delete p2;
return 0;
}
在这个合并的代码中,我们首先定义了两个结构体类型:Person
和Point
。然后,我们创建了一个Person
类型的结构体变量p1
和一个Point
类型的结构体变量pt
。我们直接使用.
操作符来访问p1
的成员。
接着,我们创建了一个指向Person
的指针p2
,并使用new
关键字为其分配了内存。通过p2
指针,我们可以使用->
操作符来访问结构体的成员。同样,我们创建了一个指向Point
的指针ptr
,以及一个指向ptr
的指针pptr
。通过ptr
和pptr
,我们可以访问pt
的成员。
最后,我们使用delete
关键字释放了p2
指向的内存。这是因为p2
是通过new
动态分配的,而pt
和ptr
是自动存储的,不需要手动释放。