-
指針 引用
交換函數(shù)
查看全部 -
指針類型的引用
引用≈別名 結(jié)果輸出20
查看全部 -
字符串指針和字符指針都是保存著第一個(gè)字符的內(nèi)存地址
查看全部 -
為什么cout<<*str<<endl; ?只顯示H; 為什么不選擇打印*str;而是str?
加上了*代表的是str的第一個(gè)元素 ? ?*str等價(jià)于 str[0] ? ?*str+1等價(jià)于str[1];所以打印的時(shí)候會打印出第一個(gè)字符H
需要打印全部只需要cout<<str<<endl;即可
查看全部 -
基本數(shù)據(jù)類型的引用
#include?<iostream> using?namespace?std; int?main(void) { ????int?a=3; ????int?&b=a;//引用必須初始化 ????b=10; ????cout<<a<<endl; ????return?0; }
? 結(jié)構(gòu)體類型的引用
typedef?struct { ????int?x; ????int?y; }Coor;
#include?<iostream> using?namespace?std; int?main(void) { ????Coor?c1; ????Coor?&c=c1; ????c.x=10; ????c.y=20; ????cout<<c1.x<<c1.y; ????return?0; }
指針類型的引用
類型 *&指針引用名=指針;
#include?<iostaream> using?namespace?srd; int?main(void) { ????int?a=10; ????int?*p=&a; ????int?*&q=p; ????*q=20; ????cout<<a<<endl; ????return?0; }
引用作函數(shù)參數(shù)
void?fun(int?&a,int?&b) { ????int?c=0; ????c=a; ????a=b; ????b=c; } int?x=10,y=20; fun(x,y);
查看全部 -
這個(gè)主要是形參與實(shí)參的關(guān)系 。
在函數(shù)的參數(shù)列表里的,是形參,它是對實(shí)參的一個(gè)拷貝, 但是它們不是在內(nèi)在同一個(gè)塊。所以對形參的改變不會影響實(shí)參的值 。
c++可以通過引用,也就是別名來改變, 比如把函數(shù)定義成 void fun(int x,int &y)
這樣在函數(shù)里,對第二個(gè)參數(shù)做改變,相應(yīng)的實(shí)參也會改變,因?yàn)樗鼈兪峭粋€(gè)。 這就是引用類型的作用。查看全部 -
C++內(nèi)存管理
查看全部 -
有默認(rèn)參數(shù)值的參數(shù)必須在參數(shù)表的最右端,也就是從右往左看不能先出現(xiàn)沒有默認(rèn)值的而后出現(xiàn)有默認(rèn)值的。
聲明時(shí)可加默認(rèn)值,定義時(shí)建議不加,因?yàn)橛行┚幾g器通不過。
無實(shí)參時(shí)用默認(rèn)值,否則實(shí)參覆蓋默認(rèn)值。
遞歸函數(shù)無法使用內(nèi)聯(lián)方式。
查看全部 -
指針指向const修飾的變量時(shí),應(yīng)該是const int const *p = &a;
const int const *p = &a這種寫法可以運(yùn)行,但是等價(jià)于const int *p = &a,也等價(jià)于int?const?*p = &a。從可讀性角度,可刪減一個(gè)const。三種const的作用都是把*p當(dāng)作常量。
當(dāng)const已經(jīng)修飾一直變量時(shí),再去用指針去指這個(gè)變量會很危險(xiǎn),因?yàn)橹羔樋梢愿娜ピ撟兞康闹?,與const就有沖突的風(fēng)險(xiǎn),const int *p=&a和const int * const p=&a是可以的,這樣保證了*p的值不能改變,所以就不會有與const沖突的可能性。
查看全部 -
p=&y后,*p為y的值,那么x會更新為5么?
p是指針,且不是const指針,也就是說你可以更改p的指向,讓p指向其他int變量。
x和y是兩個(gè)不相關(guān)的變量,一開始時(shí)p是指向x的。
p=&y; ?這一語句你讓p指向y這個(gè)變量,那么再*p得到就是y,與x完全沒有關(guān)系了。
C++是一門強(qiáng)類型的語言,變量的所有行為都與它的類型有關(guān)。p的類型聲明為 int const *p ,這里的const修飾的是前面的int,也就是說,p所指的對象是const int的,那么*p得到的對象的類型也被當(dāng)作是const int的,所以才不能被修改。這與p到底指向什么無關(guān),這樣的行為只與p自己的類型有關(guān)。
“但可以通過改變p來改變*p”?*p始終是不可修改的。你所見到的前后兩個(gè)*p值不同,完全是因?yàn)閜在前后分別指向了不同的對象x和y,x和y的值本就不同而已。
但是這里的改變?不是改變了原先*p指向的值??而是指向了其他的值 “但可以通過改變p來改變*p”?*p始終是不可修改的。你所見到的前后兩個(gè)*p值不同,完全是因?yàn)閜在前后分別指向了不同的對象x和y,x和y的值本就不同而已。
查看全部 -
?'int x = 3; const int *p = &x; ',作者說“p=&y正確,*p=4錯(cuò)誤”
*p=3是固定的(只能通過改變x的值來改變,不能通過給*p賦值來改變)
,const int *y = &x;是指向的地址的內(nèi)容不可變,即不可通過對*y賦值來修改x的值;但可以修改指向的地址。
int *const y = &x;才是y = &p;錯(cuò)誤,而可以進(jìn)行*y = 10;對x的值進(jìn)行修改。
查看全部 -
從權(quán)限角度理解
查看全部 -
不是等價(jià)的,因?yàn)閤是一個(gè)變量,而y雖然是x的別名,但是他表示的是一個(gè)常量;
因此,可以改變x的值,而不能通過對y的賦值語句改變他們的值;
至于意義,我想可能是為了對操作權(quán)限進(jìn)行限制吧,對x的操作權(quán)限比對y的要大。
查看全部 -
int x=3;const int &y=x;此時(shí)的x和y還是等價(jià)的嗎?若是不等價(jià),那么該語句的意義何在?
查看全部 -
函數(shù)定義一般寫在主函數(shù)后邊。主函數(shù)前邊可以聲明,也可以不用聲明
查看全部
舉報(bào)