->

->

->是C語言和C++語言的一個運算符,叫做指向結構體成員運算符,用處是使用一個指向結構體或對象的指針訪問其內成員。

基本介紹

  • 中文名:指向結構體成員運算符
  • 外文名:Point to the structure member operator
  • 符號:->
  • 意義:指向結構體成員運算符
  • 用法:指針->成員名字
簡介,用法實例,1.,2.,重載,

簡介

->運算符叫做“指向結構體成員運算符”,是C語言和C++語言的一個運算符。
一個指針當用來指向一個結構體對象時,稱之為結構體指針或對象指針。結構體指針或對象指針中的值是所指向的結構體或對象的首地址。通過結構體指針或對象指針即可訪問該結構體或對象。
這需要用到結構體關鍵字struct和C++類關鍵字class
結構體指針和對象指針定義的形式:
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;}
程式輸出:
5Tony

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;}
程式輸出:5Tony
不過在定義全局函式的時候最好傳入引用而不是指針,這樣在調用對象時和定義函式不會出錯。

重載

->的重載比較特殊。
#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*/

相關詞條

熱門詞條

聯絡我們