C++中指向结构体的指针
作者:野牛程序员:2023-02-24 17:53:46C++程序设计阅读 2790
在 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
