C++基礎(chǔ)語法學(xué)習(xí):引用 vs 指針
C++ 引用 vs 指針
引用很容易與指針混淆,它們之間有三個(gè)主要的不同:
不存在空引用。引用必須連接到一塊合法的內(nèi)存。
一旦引用被初始化為一個(gè)對(duì)象,就不能被指向到另一個(gè)對(duì)象。指針可以在任何時(shí)候指向到另一個(gè)對(duì)象。
引用必須在創(chuàng)建時(shí)被初始化。指針可以在任何時(shí)間被初始化。
把引用作為參數(shù):
void swap(int& x, int& y)
{
? ?int temp;
? ?temp = x; /* 保存地址 x 的值 */
? ?x = y; ? ?/* 把 y 賦值給 x */
? ?y = temp; /* 把 x 賦值給 y ?*/
??
? ?return;
}
int main(void)
{
int a = 3,b = 7;
swap(a,b);
}
把引用作為返回值:
int vals[] = {10.1, 12.6, 33.1, 24.1, 50.0};
int &Setvalue(int i)
{
return vals[i];
}
int main(void)
{
setValues(1) = 100;
cout<<"vals[1]"<<vals[1]<<endl;
}
改變了vals中的值。
獲取當(dāng)前日期和時(shí)間:
#include#includeusing?namespace?std; int?main(?) { ???//?基于當(dāng)前系統(tǒng)的當(dāng)前日期/時(shí)間 ???time_t?now?=?time(0); ??? ???//?把?now?轉(zhuǎn)換為字符串形式 ???char*?dt?=?ctime(&now); ???cout?<<?"本地日期和時(shí)間:"?<<?dt?<<?endl; ???//?把?now?轉(zhuǎn)換為?tm?結(jié)構(gòu) ???tm?*gmtm?=?gmtime(&now); ???dt?=?asctime(gmtm); ???cout?<<?"UTC?日期和時(shí)間:"<<?dt?<<?endl; }
當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:
本地日期和時(shí)間:Sat?Jan??8?20:07:41?2011 UTC?日期和時(shí)間:Sun?Jan??9?03:07:41?2011
標(biāo)準(zhǔn)輸入輸出
(1)預(yù)定義的對(duì)象?cin?是?istream?類的一個(gè)實(shí)例。cin
對(duì)象附屬到標(biāo)準(zhǔn)輸入設(shè)備,通常是鍵盤。cin?是與流提取運(yùn)算符
>> 結(jié)合使用的
(2)預(yù)定義的對(duì)象?cerr?是?ostream?類的一個(gè)實(shí)例。cerr
對(duì)象附屬到標(biāo)準(zhǔn)錯(cuò)誤設(shè)備,通常也是顯示屏,但是?cerr?對(duì)象是非緩沖的,且每個(gè)流插入到
cerr 都會(huì)立即輸出。
(3)定義的對(duì)象?clog?是?ostream?類的一個(gè)實(shí)例。clog
對(duì)象附屬到標(biāo)準(zhǔn)錯(cuò)誤設(shè)備,通常也是顯示屏,但是?clog?對(duì)象是緩沖的。這意味著每個(gè)流插入到
clog 都會(huì)先存儲(chǔ)在緩沖在,直到緩沖填滿或者緩沖區(qū)刷新時(shí)才會(huì)輸出
(4)預(yù)定義的對(duì)象?cout?是?ostream?類的一個(gè)實(shí)例。cout
對(duì)象"連接"到標(biāo)準(zhǔn)輸出設(shè)備,通常是顯示屏。cout?是與流插入運(yùn)算符
<< 結(jié)合使用的;