在 C++ 中,指针 可以存放任意的 数据类型 的地址,比如 int、long、dobule,也可以存放 结构体 的地址,存放结构体地址的指针,我们称为结构体指针。
struct structName *pArrName;
我们定义了一个结构体指针 pArrName,该指针存放的是结构体 structName 的地址。
pArrName->fileld;
参数 | 描述 |
---|---|
pArrName | 结构体指针名。 |
fileld | 需要访问的成员。 |
如果是结构体指针,要访问其成员,那么我们不再是使用点,而是使用 ->
。
(*pArrName).fileld;
参数 | 描述 |
---|---|
pArrName | 结构体指针名。 |
fileld | 需要访问的成员。 |
如果我们使用 *
的方式,访问结构体成员,那么我们必须要使用 ()
改变 运算符的优先级,否则,会出错。
C++ 结构体指针定义与使用
#include <iostream>
using namespace std;
struct Student{
char *name;
float score;
};
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
struct Student student = {"HaiCoder", 100};
struct Student *pStu = &student;
cout << "Stu name = " << pStu->name << " score = " << pStu->score << endl;
return 0;
}
程序运行后,控制台输出如下图所示:
我们首先,定义了一个结构体 Student,该结构体有两个成员,即一个 字符串 类型的 name 和一个 float 类型 的 score。
接着,我们定义了一个结构体类型变量 student 并初始化,同时,我们定义了一个结构体指针 pStu,其指向了 student 结构体。
最后,我们使用 cout 打印了结构体指针中的成员,这里,我们使用的是 ->
,而不是点。
C++ 结构体指针定义与使用
#include <iostream>
using namespace std;
struct Student{
char *name;
float score;
};
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
struct Student student = {"HaiCoder", 109};
struct Student *pStu = &student;
cout << "Stu name = " << (*pStu).name << " score = " << (*pStu).score << endl;
return 0;
}
程序运行后,控制台输出如下图所示:
这次,我们使用了 *
的方式,来访问了结构体的成员,这里,我们必须使用 ()
改变运算符的优先级。
在 C++ 中,指针可以存放任意的数据类型的地址,比如 int、long、dobule,也可以存放结构体的地址,存放结构体地址的指针,我们称为结构体指针。