C++中,箭头操作符“->”怎样使用? C++中,箭头操作符“->”怎样使用?

c++\u4e2d\u7bad\u5934\u548c\u70b9\u7684\u533a\u522b

(*p).a \u548c p->a
\u662f\u4e00\u6837\u7684

\u7bad\u5934\u64cd\u4f5c\u7b26\u201c->\u201d\u7528\u6765\u5f15\u7528\u6307\u9488\u5bf9\u8c61\u3002\u8fd9\u662f\u662f\u7528\u4e8e\u7c7b\uff0c\u6216\u8005\u662f\u7ed3\u6784\u4f53\u7684\u6307\u9488\u53d8\u91cf\u7528\u7684\u3002 \u5982struct Point {int x,y;};Point *pt=new Point;pt->x=1;
\u4e3e\u4f8b\u5b50\u8bf4\u660e\u4e00\u4e0b\uff1a\u6bd4\u5982\uff0c\u6211\u6709\u4e00\u4e2a\u5bf9\u8c61darkray\u3002\u90a3\u4e48\u6211\u53ef\u4ee5\u901a\u8fc7\u201d.\u201d\u6765\u8c03\u7528darkray\u7c7b\u4e2d\u4e2d\u7684\u6210\u5458\u53d8\u91cf\u3002\u4f46\u662f\u5982\u679cdarkray\u662f\u6307\u9488\u7684\u8bdd\uff0c\u5c31\u4e0d\u80fd\u901a\u8fc7\u201d.\u201d\u6765\u8c03\u7528\uff0c\u800c\u53ea\u80fd\u4f7f\u7528\u201d->\u201d\u6765\u8c03\u7528\u4e86\u3002\u653e\u5230C\u8bed\u8a00\u4e2d\u4e0d\u5b58\u5728\u5bf9\u8c61\u7684\u6982\u5ff5\u7684\u3002\u70b9\u64cd\u4f5c\u7b26\u7528\u5f97\u5230\u7684\u5730\u65b9\uff0c\u5927\u591a\u5728\u7ed3\u6784\uff0c\u6bd4\u5982\uff1astruct darkray{float coder;int geek;};\u5728\u7a0b\u5e8f\u4e2ddarkray fuckyou={2.3,350};
\u5c31\u53ef\u4ee5\u7528fuckyou.coder\u6765\u53d6\u5f97\u7ed3\u6784\u4e2d\u7684\u503c\u3002\u8fd9\u65f6\u662f\u4e0d\u80fd\u4f7f\u7528\u201d->\u201d\u6765\u8c03\u7528\u7684\uff0c\u201d->\u201d\u7b26\u53f7\u6307\u9488\u5bf9\u6307\u9488\u6765\u8bf4\u7684\u3002\u53ea\u6709\u5728\u5982\u4e0b\u60c5\u51b5\u53ef\u4ee5\u4f7f\u7528\u201d->\u201ddarkray* fuckme;fuckme->coder=2.33;\u6b64\u65f6fuckme\u4e3a\u4e00\u4e2adarkray\u7ed3\u6784\u7684\u5730\u5740\u6307\u9488\u3002\u6240\u4ee5\u53ef\u4ee5\u4f7f\u7528\u201d->\u201d,\u800c\u6b64\u65f6\u5c31\u4e0d\u80fd\u4f7f\u7528\u201c.\u201d\u6765\u64cd\u4f5c\u3002\u56e0\u4e3a\u201d.\u201d \u201c\u76f8\u5f53\u4e8e\u201d\u5bf9\u8c61\u7684\u6210\u5458\u8c03\u7528\u3002

这是是用于。类,或者是结构体的指针变量 用的。 如
struct Point {int x,y;};
Point *pt=new Point;
pt->x=1;

指针可以调用类中的成员函数

右箭操作符与点操作符
如果访问的是函数中的局部变量,则应该使用点操作,如下:
Student get()
{
Student temp;
temp.dept=1;
temp.gpa=3.8;}
如果把结构的地址传给了函数,函数中就应该使用间接寻址操作和点操作。
//注意:这段代码不能编译
void get(Student *temp_ptr)
{
*temp_ptr.dept=1;
*temp_ptr.gpa=3.8;
}
哪儿出错?原因是点操作符的优先级比间接寻址符的高,即,程序线执行点操作符。

  • c 鐨绠ご鏄粈涔堟剰鎬
    绛旓細鈥C鐨勭澶粹濋氬父鏄寚C璇█涓殑鈥绠ご杩愮畻绗鈥濓紙->锛夈傜澶寸殑浣滅敤鏄敤浜庤闂粨鏋勪綋鎴栬仈鍚堜綋鍙橀噺涓殑鎴愬憳锛岃繖涔熻绉颁綔缁撴瀯浣撴垨鑱斿悎浣撶殑鎴愬憳璁块棶绗︺傜澶磋繍绠楃鐩稿綋浜庡彇鍦板潃绗﹀拰鐐硅繍绠楃鐨勭粨鍚堬紝瀹冨彲浠ョ粫杩囨寚閽堣繘琛岀粨鏋勪綋鎴栬仈鍚堜綋鎴愬憳鐨勮闂紝鎻愰珮浜嗙▼搴忕殑鏁堢巼鍜屽彲璇绘с侰鐨勭澶村湪绋嬪簭璁捐涓捣鐫閲嶈鐨勪綔...
  • C++涓,绠ご鎿嶄綔绗鈥->鈥濇庢牱浣跨敤?
    绛旓細绠ご鎿嶄綔绗鈥->鈥濈敤鏉ュ紩鐢ㄦ寚閽堝璞°傝繖鏄槸鐢ㄤ簬绫伙紝鎴栬呮槸缁撴瀯浣撶殑鎸囬拡鍙橀噺鐢ㄧ殑銆 濡俿truct Point {int x,y;};Point *pt=new Point;pt->x=1;涓句緥瀛愯鏄庝竴涓嬶細姣斿锛屾垜鏈変竴涓璞arkray銆傞偅涔堟垜鍙互閫氳繃鈥.鈥濇潵璋冪敤darkray绫讳腑涓殑鎴愬憳鍙橀噺銆備絾鏄鏋渄arkray鏄寚閽堢殑璇濓紝灏变笉鑳介氳繃鈥.鈥濇潵璋...
  • C璇█缂栧啓绋嬪簭鏃绠ご鎬庝箞杈撳叆???
    绛旓細C璇█涓娇鐢ㄧ殑绠ご绗鍙蜂负->銆傝鎿嶄綔绗骞堕潪鏄竴涓鍙凤紝鑰屾槸鐢卞噺鍙(-)鍜屽ぇ浜庡彿(>)鍏卞悓缁勬垚鐨勩傛墍浠ュ湪鎵->鏃讹紝闇瑕佸厛鎵-,浣嶄簬閿洏鍙充笂瑙掞紝0鍜=涔嬮棿锛岀洿鎺ョ偣鍑诲嵆鍙傜劧鍚庡啀杈撳叆>鍙凤紝鍦ㄩ敭鐩樺彸涓嬭锛屽彸shift宸﹁竟锛岄楀彿鍜屾枩绾/涔嬮棿锛屼笌鍙ュ彿鍦ㄥ悓涓涓寜閿笂锛岃緭鍏ユ椂闇瑕佹寜shift鍚屾椂鎸夎閿->浣滅敤涓猴紝...
  • C璇█杩愮畻绗︿腑绠ご鏄粈涔堟剰鎬濆晩
    绛旓細->鍦C璇█涓紝鍙仛鎸囧悜缁撴瀯浣撴垚鍛杩愮畻绗锛岀敤澶勬槸浣跨敤涓涓寚鍚戠粨鏋勪綋鎴栧璞$殑鎸囬拡璁块棶鍏跺唴鎴愬憳銆備竴涓寚閽堝綋鐢ㄦ潵鎸囧悜涓涓粨鏋勪綋銆佸璞℃椂锛岀О涔嬩负缁撴瀯浣撴寚閽堟垨瀵硅薄鎸囬拡銆傜粨鏋勪綋鎸囬拡鎴栧璞℃寚閽堜腑鐨勫兼槸鎵鎸囧悜鐨勭粨鏋勪綋鎴栧璞$殑棣栧湴鍧銆傞氳繃缁撴瀯浣撴寚閽堟垨瀵硅薄鎸囬拡鍗冲彲璁块棶璇ョ粨鏋勪綋鎴栧璞°傛寚鍚戠粨鏋勪綋鎴愬憳杩愮畻绗...
  • 鍒╃敤c璇█瀹炵幇缂栫▼ 鐢讳竴涓绠ご
    绛旓細C璇█涓娇鐢ㄧ殑绠ご绗鍙蜂负->銆傝鎿嶄綔绗骞堕潪鏄竴涓鍙凤紝鑰屾槸鐢卞噺鍙(-)鍜屽ぇ浜庡彿(>)鍏卞悓缁勬垚鐨勩傛墍浠ュ湪鎵->鏃讹紝闇瑕佸厛鎵-,浣嶄簬閿洏鍙充笂瑙掞紝0鍜=涔嬮棿锛岀洿鎺ョ偣鍑诲嵆鍙傜劧鍚庡啀杈撳叆>鍙凤紝鍦ㄩ敭鐩樺彸涓嬭锛屽彸shift宸﹁竟锛岄楀彿鍜屾枩绾/涔嬮棿锛屼笌鍙ュ彿鍦ㄥ悓涓涓寜閿笂锛岃緭鍏ユ椂闇瑕佹寜shift鍚屾椂鎸夎閿->浣滅敤涓猴紝...
  • C璇█鍜孋++涓殑::鍜->鏄粈涔堟剰鎬?
    绛旓細::鏄綔鐢ㄥ煙鎿嶄綔绗︼紝琛ㄧず浣犲紩鐢ㄧ殑鍙橀噺闄愬畾鍦ㄨ浣滅敤鍩熷唴銆->鏄绠ご鎿嶄綔绗︼紝璁捐瀹冪殑鐩殑鏄负浜嗙畝鍖栬緭鍏ワ紝浠ュ強澧炲己绋嬪簭鐨勫彲璇绘х殑 ->鐨勫姛鑳界浉褰撲簬瑙e紩鐢ㄦ搷浣滅*鍜屾垚鍛樿皟鐢ㄦ搷浣滅.鐨勭粍鍚堜綋 渚嬪锛歝lass C { static int a;} 璁块棶a灏卞彲浠ヤ娇鐢–::a鏉ヨ闂紝琛ㄦ槑杩欎釜鍙橀噺a鍏锋湁绫籆鐨勪綔鐢ㄥ煙銆傚畠鍦ㄨ绫诲唴...
  • C璇█涓,鐢"->"鍜岀敤"."鐨勫尯鍒
    绛旓細c璇█涓粷瀵规湁鈥->鈥濆拰鈥.鈥濓紒杩欎袱涓杩愮畻绗閮芥槸鐢ㄦ潵璁块棶缁撴瀯浣撶殑銆傛瘮濡傛湁缁撴瀯浣 struct student { int math;int english;};骞朵笖鏈変袱涓彉閲 struct student zhangsan;struct student *p;p=&zhangsan;浣犺鐣欐剰zhangsan鏄粨鏋勪綋鐨勫悕瀛楋紝p鏄寚鍚戣繖涓粨鏋勪綋鐨勬寚閽堛傞偅涔堣闂粨鏋勪綋鐨勪袱涓彉閲忔椂灏卞彧鑳界敤 z...
  • 绠ご鎿嶄綔绗(arrow operator)鐨勫畾涔変互鍙婄敤娉
    绛旓細鏄->鎿嶄綔绗︼紝浣滅敤鐩稿綋浜.鎿嶄綔绗︼紝瀵圭粨鏋勪綋鎸囬拡閫傜敤 绛変环浜 (*鎸囬拡).鎴愬憳 include <stdio.h> typedef struct {int x,y;} POINT,*PPOINT;POINT a;int main(){ PPOINT b=&a;a.x=4; // 涓嶈兘鐢 a->x printf("a.x=%d\n",a.x);b->x=5; // 涓嶈兘鐢 b.x printf("a.x=%d\n...
  • C璇█涓,sptr->SumError = 0;浠涔堝惈涔?灏ゅ叾鏄鍙->鐨勫惈涔,鏈涢珮鎵嬫寚鐐...
    绛旓細sptr鏄竴涓寚閽堬紝鎸囧悜鏌愪竴涓粨鏋勪綋锛岃缁撴瀯浣撳寘鍚垚鍛 SumError锛屾湰鍙ュ皢 SumError 璧嬪间负 0銆-> 鏄绠ご鎿嶄綔绗︼紝璺 . 绫讳技锛岄兘鍙互鐢ㄦ潵璁块棶缁撴瀯浣撲腑鐨勬垚鍛樸傛瘮濡傦細struct Person { char name[10];int age;};濡傛灉浣犲0鏄庝簡 Person pon; 閭d箞鍙互鐢 pon.name 鍜 pon.age 鏉ヨ闂粨鏋勪綋鐨勬垚鍛樸傚...
  • C璇█涓,sptr->SumError = 0;浠涔堝惈涔?灏ゅ叾鏄鍙->鐨勫惈涔,鏈涢珮鎵嬫寚鐐...
    绛旓細鍦C璇█涓紝sptr鎸囧悜涓涓寘鍚垚鍛楽umError鐨勭粨鏋勪綋銆傚皢sptr->SumError璧嬪间负0鎰忓懗鐫灏嗙粨鏋勪綋涓璖umError鎴愬憳鐨勫艰缃负0銆绠ご鎿嶄綔绗->鐢ㄤ簬璁块棶骞堕氳繃鎸囬拡鎸囧悜鐨勭粨鏋勪綋鎴愬憳銆傝繖涓庣偣鎿嶄綔绗.涓嶅悓锛屽悗鑰呯敤浜庣洿鎺ヨ闂粨鏋勪綋鍙橀噺鐨勬垚鍛樸備緥濡傦紝濡傛灉鏈変竴涓粨鏋勪綋Person锛屽寘鍚玭ame鍜宎ge鎴愬憳锛屽0鏄庝簡涓涓狿erson...
  • 扩展阅读:免费logo设计生成器 ... c++横线箭头是什么意思 ... c++编程 ... c++入门代码 ... c++符号大全 ... c++输入输出 ... 结构体箭头怎么打 ... 特殊符号大全 ... c++编程怎样使用 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网