当前位置:首页C++程序设计 > 正文

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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击