結構體中使用 箭頭 與 點 的區別


相同點:兩個都是二元操作符,其右操作符是成員的名稱。

 

不同點:點操作符左邊的操作數是一個“結果為結構”的表達式;

                箭頭操作符左邊的操作數是一個指向結構的指針。

 

  • 點運算是結構體變量訪問其成員的操作符
  • 箭頭運算是結構體指針訪問其指向成員變量的操作符

具體內容參考鏈接:https://blog.csdn.net/***_xujiping/article/details/76540178?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159296911319724835808032%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=159296911319724835808032&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_ctr_v4-2-76540178.ecpm_v1_rank_ctr_v4&utm_term=%E6%8C%87%E9%92%88%E7%AE%AD%E5%A4%B4%E5%92%8C.%E7%9A%84%E5%8C%BA%E5%88%AB

首先介紹一下C++中的結構。對於一個結構來說,
struct MyStruct
{
int member_a;
};

如果有個變量MyStruct s,那么使用其中的成員元素時可以用
s.member_a = 1;
如果采用指針方法訪問,比如MyStruct * ps,那么同樣的訪問就必須使用如下形式:
(*ps).member_a = 1;
或者
ps->member_a = 1;
c++中當定義類對象是指針對象時候,就需要用到->指向類中的成員;當定義一般對象時候時就需要用到"."指向類中的成員.......
例如:
class A
{
public
play();
}
如果定義如下:
A *p則:p->play()使用; 左邊是結構指針。
A p 則:p.paly()使用; 左邊是結構變量。
總結:
箭頭(->):左邊必須為指針;
點號(.):左邊必須為實體。

 

struct {
int len;
char *str;
} *p;

*p->str 讀取的是指針str 所指向的對象的值;*p->str++先讀取指針str 指向的對象的值,然后再將str 加1(與*s++相同);(*p->str)++將指針str 指向的對象的值加1;*p++->str先讀取指針str指向的對象的值,然后再將p加1。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM