C語言/C++編程基礎(chǔ)學(xué)習(xí)之指針與引用

C語言是面向過程的意系,而C++是面向?qū)ο蟮? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? C和C++的區(qū)別:

C是一個結(jié)構(gòu)化語言染厅,它的重點在于算法和數(shù)據(jù)結(jié)構(gòu)社裆。C程序的設(shè)計首要考慮的是如何通過一個過程耳贬,對輸入(或環(huán)境條件)進行運算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)政供。

C++,首要考慮的是如何構(gòu)造一個對象模型尽狠,讓這個模型能夠契合與之對應(yīng)的問題域蚕礼,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣席舍。之所以說C++比C更先進布轿,是因為“ 設(shè)計這個概念已經(jīng)被融入到C++之中 ”。

C與C++的最大區(qū)別:在于它們的用于解決問題的思想方法不一樣来颤。之所以說C++比C更先進汰扭,是因為“ 設(shè)計這個概念已經(jīng)被融入到C++之中 ”,而就語言本身而言脚曾,在C中更多的是算法的概念东且。那么是不是C就不重要了,錯本讥!算法是程序設(shè)計的基礎(chǔ),好的設(shè)計如果沒有好的算法鲁冯,一樣不行拷沸。而且,“C加上好的設(shè)計”也能寫出非常好的東西薯演。

小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 六九九撞芍,四七零,五九六 】跨扮,無論你是大牛還是小白序无,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具衡创,很多干貨和技術(shù)資料分享帝嗡!

C/C++中的引用與指針的區(qū)別

指向不同類型的指針的區(qū)別在于指針類型可以知道編譯器解釋某個特定地址(指針指向的地址)中的內(nèi)存內(nèi)容及大小,而void*指針則只表示一個內(nèi)存地址璃氢,編譯器不能通過該指針所指向?qū)ο蟮念愋秃痛笮∮寸瑁虼讼胍ㄟ^void*指針操作對象必須進行類型轉(zhuǎn)化。

★ 相同點:

1. 都是地址的概念一也;

指針指向一塊內(nèi)存巢寡,它的內(nèi)容是所指內(nèi)存的地址;

引用是某塊內(nèi)存的別名椰苟。

★ 區(qū)別:

1. 指針是一個實體抑月,而引用僅是個別名;

2. 引用使用時無需解引用(*)舆蝴,指針需要解引用谦絮;

3. 引用只能在定義時被初始化一次菱皆,之后不可變;指針可變挨稿;

引用“從一而終” ^_^

4. 引用沒有 const仇轻,指針有 const,const 的指針不可變奶甘;

5. 引用不能為空篷店,指針可以為空;

6. “sizeof 引用”得到的是所指向的變量(對象)的大小臭家,而“sizeof 指針”得到的是指針本身(所指向的變量或?qū)ο蟮牡刂罚┑拇笮疲陕。?/p>

typeid(T) == typeid(T&) 恒為真,sizeof(T) == sizeof(T&) 恒為真钉赁,但是當引用作為類成員名稱時蹄殃,其占用空間與指針相同4個字節(jié)(沒找到標準的規(guī)定)。

7. 指針和引用的自增(++)運算意義不一樣你踩;

★ 聯(lián)系

1. 引用在語言內(nèi)部用指針實現(xiàn)(如何實現(xiàn)诅岩?)。

2. 對一般應(yīng)用而言带膜,把引用理解為指針吩谦,不會犯嚴重語義錯誤。引用是操作受限了的指針(僅容許取內(nèi)容操作)膝藕。

引用是C++中的概念式廷,初學(xué)者容易把引用和指針混淆一起。一下程序中芭挽,n 是m 的一個引用(reference)滑废,m 是被引用物(referent)。

int m袜爪;

int &n = m蠕趁;

n 相當于m 的別名(綽號),對n 的任何操作就是對m 的操作饿敲。例如有人名叫王小毛妻导,他的綽號是“三毛”。說“三毛”怎么怎么的怀各,其實就是對王小毛說三道四倔韭。所以n 既不是m 的拷貝,也不是指向m 的指針瓢对,其實n 就是m 它自己寿酌。

引用的一些規(guī)則如下:

(1)引用被創(chuàng)建的同時必須被初始化(指針則可以在任何時候被初始化)。

(2)不能有NULL 引用硕蛹,引用必須與合法的存儲單元關(guān)聯(lián)(指針則可以是NULL)醇疼。

(3)一旦引用被初始化硕并,就不能改變引用的關(guān)系(指針則可以隨時改變所指的對象)。

以下示例程序中秧荆,k 被初始化為i 的引用倔毙。語句k = j 并不能將k 修改成為j 的引用,只是把k 的值改變成為6.由于k 是i 的引用乙濒,所以i 的值也變成了6.

int i = 5陕赃;

int j = 6;

int &k = i颁股;

k = j么库; // k 和i 的值都變成了6;

上面的程序看起來象在玩文字游戲甘有,沒有體現(xiàn)出引用的價值诉儒。引用的主要功能是傳遞函數(shù)的參數(shù)和返回值。C++語言中亏掀,函數(shù)的參數(shù)和返回值的傳遞方式有三種:值傳遞忱反、指針傳遞和引用傳遞。

小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 六九九幌氮,四七零缭受,五九六 】,無論你是大牛還是小白该互,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具韭畸,很多干貨和技術(shù)資料分享宇智!

1)以下是“值傳遞”的示例程序。由于Func1 函數(shù)體內(nèi)的x 是外部變量n 的一份拷貝胰丁,改變x 的值不會影響n随橘, 所以n 的值仍然是0.

void Func1(int x)

{

x = x + 10;

}

int n = 0;

Func1(n);

cout << “n = ” << n << endl;// n = 0

2)以下是“指針傳遞”的示例程序。由于Func2 函數(shù)體內(nèi)的x 是指向外部變量n 的指針锦庸,改變該指針的內(nèi)容將導(dǎo)致n 的值改變机蔗,所以n 的值成為10.

void Func2(int *x)

{

(* x) = (* x) + 10;

}

?

int n = 0;

Func2(&n);

cout << “n = ” << n << endl; // n = 10

3)以下是“引用傳遞”的示例程序。由于Func3 函數(shù)體內(nèi)的x 是外部變量n 的引用甘萧,x和n 是同一個東西萝嘁,改變x 等于改變n,所以n 的值成為10.

void Func3(int &x)

{

x = x + 10;

}

?

int n = 0;

Func3(n);

cout << “n = ” << n << endl; // n = 10

對比上述三個示例程序扬卷,會發(fā)現(xiàn)“引用傳遞”的性質(zhì)象“指針傳遞”牙言,而書寫方式象“值傳遞”。實際上“引用”可以做的任何事情“指針”也都能夠做怪得,為什么還要“引用”這東西咱枉?

答案是“用適當?shù)墓ぞ咦銮∪缙浞值墓ぷ鳌薄?/p>

指針能夠毫無約束地操作內(nèi)存中的如何東西卑硫,盡管指針功能強大,但是非常危險蚕断。

就象一把刀欢伏,它可以用來砍樹、裁紙亿乳、修指甲硝拧、理發(fā)等等,誰敢這樣用风皿?

小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 六九九河爹,四七零,五九六 】桐款,無論你是大牛還是小白咸这,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具魔眨,很多干貨和技術(shù)資料分享媳维!

如果的確只需要借用一下某個對象的“別名”,那么就用“引用”遏暴,而不要用“指針”侄刽,以免發(fā)生意外。比如說朋凉,某人需要一份證明州丹,本來在文件上蓋上公章的印子就行了,如果把取公章的鑰匙交給他杂彭,那么他就獲得了不該有的權(quán)利墓毒。

這些是C/C++能做的

服務(wù)器開發(fā)工程師、人工智能亲怠、云計算工程師所计、信息安全(黑客反黑客)、大數(shù)據(jù) 团秽、數(shù)據(jù)平臺主胧、嵌入式工程師、流媒體服務(wù)器习勤、數(shù)據(jù)控解踪栋、圖像處理、音頻視頻開發(fā)工程師姻报、游戲服務(wù)器己英、分布式系統(tǒng)、游戲輔助等

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吴旋,一起剝皮案震驚了整個濱河市损肛,隨后出現(xiàn)的幾起案子厢破,更是在濱河造成了極大的恐慌,老刑警劉巖治拿,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摩泪,死亡現(xiàn)場離奇詭異,居然都是意外死亡劫谅,警方通過查閱死者的電腦和手機见坑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捏检,“玉大人荞驴,你說我怎么就攤上這事」岢牵” “怎么了熊楼?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長能犯。 經(jīng)常有香客問我鲫骗,道長,這世上最難降的妖魔是什么踩晶? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任执泰,我火速辦了婚禮,結(jié)果婚禮上渡蜻,老公的妹妹穿的比我還像新娘术吝。我一直安慰自己,他們只是感情好茸苇,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布顿苇。 她就那樣靜靜地躺著,像睡著了一般税弃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凑队,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天则果,我揣著相機與錄音,去河邊找鬼漩氨。 笑死西壮,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的叫惊。 我是一名探鬼主播款青,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼霍狰!你這毒婦竟也來了抡草?” 一聲冷哼從身側(cè)響起饰及,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎康震,沒想到半個月后燎含,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡腿短,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年屏箍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片橘忱。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡赴魁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钝诚,到底是詐尸還是另有隱情颖御,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布敲长,位于F島的核電站郎嫁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏祈噪。R本人自食惡果不足惜泽铛,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辑鲤。 院中可真熱鬧盔腔,春花似錦、人聲如沸月褥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宁赤。三九已至舀透,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間决左,已是汗流浹背愕够。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留佛猛,地道東北人惑芭。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像继找,于是被迫代替她去往敵國和親遂跟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容