c++指针与结构体
原创
©著作权归作者所有:来自51CTO博客作者zzxiaoma的原创作品,请联系作者获取转载授权,否则将追究法律责任
使用指针指向结构体,通过指针访问结构体的方式。
#include <iostream>
#include <cstring>
using namespace std;
int main(){
struct things {
int good;
int bad;
};
things grubnose = {3,453};
things *pt = &grubnose;
cout << grubnose.good << endl;
cout << pt -> bad << endl;
cout << (*pt).good << endl;
}
结构体grubnose访问成员使用点运算符,指针访问结构体成员使用->,pt是指向结构的指针,则*pt就是被指向的值—结构本身。由于*pt是一个结构,因此(*pt).good是该结构的成员。
结构体数组访问
int main(){
struct things {
int good;
int bad;
};
things th[3];
th[0].good = 1;
(th+1) -> good = 2;
cout << th[0].good << endl;
cout << th[1].good << endl;
}
数组直接使用下标[0]就可以访问第一个结构体元素,th是数组名,也就是指向第一个元素的指针,加1后相当于指针指向了第二个元素,然后再使用->访问结构体中的成员。
指针数组指向结构体
int main(){
struct things {
int good;
int bad;
} s1,s2,s3;
things *th[3] = {&s1,&s2,&s3};
th[0] -> good = 1; //th[0]就是一个指针
cout << th[0] -> good << endl;
things **ppa = th;
cout << (*ppa) -> good << endl;
}
由于ppa指向th的第一个元素,因此*ppa为第一个元素,即&s1。所以,(*ppa)->good为s1的good成员。