点击查看代码
#include <iostream>
using namespace std;
struct TEST1 { //结构体类型为TEST1
int data1;
double data2;
};
struct TEST2 { //结构体类型为TEST2
int data1;
//TEST2 data2; //错误,结构体内不能包含本类型的成员
struct TEST2* p1; //正确,结构体内可以包含指向本类型的指针,指针p1不属于TEST2类型,而是指向TEST2类型的指针
};
int main() {
TEST1 test1 = { 1,2.5 };//TEST1类型对象test1,初始化两个成员分别为1、2.5
//使用句点访问结构体成员
cout << "test1.data1=" << test1.data1 << " test1.data2=" << test1.data2 << endl;
TEST2 test2 = { 2,nullptr }; //TEST2类型对象test2
cout << "test2.data1=" << test2.data1 << " test2.p1=" << test2.p1 << endl;
TEST2 test3 = { 3,&test2 }; //TEST2类型对象test3。test3.p1=&test2,test3的指针成员p1指向test2
cout << "test3.data1=" << test3.data1 << " test3.p1=" << test3.p1 <<endl
<< "*(test3.p1).data1=test2.data1=" << (*test3.p1).data1 << endl //要对指针p1先解除引用才能用句点访问成员
<< "(test3.p1)->data1=test2.data1=" << (test3.p1)->data1 << endl;//使用间接成员访问符->则不用对指针p1解除引用
return 0;
}