C++中指向结构体的指针
作者:野牛程序员:2023-02-24 17:53:46C++程序设计阅读 2813
在 C++ 中,指向结构体的指针是一种常见的数据类型。结构体是一种用户定义的数据类型,它可以包含多个不同类型的成员变量,可以用来组织和存储相关数据。指向结构体的指针是指向结构体变量的内存地址的指针,可以通过该指针访问结构体变量的成员。
以下是指向结构体的指针的基本用法:
假设有如下结构体定义:
struct Person {
string name;
int age;
};可以使用以下语句定义一个指向该结构体的指针,并初始化为 NULL:
Person *ptr = NULL;
使用 new 运算符可以在堆上分配内存,并返回指向分配内存的指针。可以使用该指针来访问结构体变量的成员:
ptr = new Person; ptr->name = "Alice"; ptr->age = 20;
也可以使用指针操作符 * 来访问结构体变量的成员:
(*ptr).name = "Bob"; (*ptr).age = 30;
使用 delete 运算符可以释放分配的内存:
delete ptr;
指向结构体的指针也可以作为函数参数传递。以下是一个使用指向结构体的指针作为参数的函数的示例:
void printPersonInfo(Person *p) {
cout << "Name: " << p->name << endl;
cout << "Age: " << p->age << endl;
}
// 使用示例
Person *ptr = new Person;
ptr->name = "Charlie";
ptr->age = 25;
printPersonInfo(ptr);
delete ptr;以上是指向结构体的指针的基本用法,需要注意的是,在使用指向结构体的指针时,需要保证指针不为空,否则会导致程序崩溃。
正确格式是Person* ptr 还是 Person *ptr?
在C++中,正确的格式是 Person* ptr,这种格式被称为“星号放在类型名后面”的格式。这种格式的原因是因为 * 是一个类型修饰符,它用来表示一个指针类型。因此,将 * 放在类型名后面,可以更清楚地指示指针类型是与变量名相关联的,而不是与类型名相关联的。
虽然 Person *ptr 也是合法的语法,但它并不是常用的格式,因为它容易被误解为 Person 是指针类型,而不是 *ptr 是指向 Person 类型的指针。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

