->是C語言和C++語言的一個運算符,叫做指向結構體成員運算符,用處是使用一個指向結構體或對象的指針訪問其內成員。
基本介紹
- 中文名:指向結構體成員運算符
- 外文名:Point to the structure member operator
- 符號:->
- 意義:指向結構體成員運算符
- 用法:指針->成員名字
簡介
一個指針當用來指向一個結構體、對象時,稱之為結構體指針或對象指針。結構體指針或對象指針中的值是所指向的結構體或對象的首地址。通過結構體指針或對象指針即可訪問該結構體或對象。
struct 結構體類型名 *指針名;//結構體指針struct 結構體類型名 *指針名 = &一個結構體的名字;//結構體指針並賦初值struct 結構體類型名 *指針名 = new struct 結構體類型名;//結構體指針並用new申請記憶體struct 結構體類型名 *指針名 =(struct 結構體類型名 *)malloc(sizeof(struct 結構體類型名))//結構體指針並用malloc申請記憶體 使用應包含頭檔案stdlib.h//對象指針的定義方法略同。
用法實例
1.
#include <iostream>#include <string>using namespace std;class C{public: int num; string name;};int main(void){ C obj; C *p = &obj; p->num = 5; p->name = "Tony"; cout << p->num << p->name << endl; return 0;}
2.
#include <iostream>#include <string>using namespace std;class C{public: int num; string name;};void changevalue(C *t,int num,string name){ t->num=num; t->name=name;}int main(void){ C obj; changevalue(&obj,5,"Tony"); cout << obj.num << obj.name << endl; return 0;}
重載
#include<iostream>using namespace std;struct stu{ char name[10000]; int number; int classnumber; int gradenumber;};class stuPoint_t{stu *p;public: stuPoint_t(){p=NULL;} stuPoint_t(stu *a){p=a;} stuPoint_t(stuPoint_t a){p=a.p;} stuPoint_t &operator=(stuPoint_t a){p=a.p;return *this;} stuPoint_t &operator=(stu *a){p=a;return *this;} stu &operator*(){return *p;} stu *operator->(){return p;}};int main(){ stu student; stuPoint_t p; p=&student;//p.operator=(&student); p->name="xiaoming";//p.operator->()->name="xiaoming"; p->number=7; p->classnumber=6; p->gradenumber=6; cout<<student.name<<" "<<student.number<<" "<<student.classnumber; cout<<" "<<student.gradenumber<<endl; stu student2={"xiaogang",13,6,5}; *p=student2;//p.operator*()=student2; cout<<student.name; return 0;}/*輸出:xiaoming 7 6 6xiaogang*/