色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子教材>《數據結構 C語言 》電子教案免費下載

《數據結構 C語言 》電子教案免費下載

2010-03-01 | rar | 7744 | 次下載 | 免費

資料介紹

《數據結構 C語言電子教案免費下載

轉變二、????????????? 聲明位置的轉變

?? C語言里,變量聲明必須放在一個函數的開頭,但在C++里,卻不需要這么做,你可以在任何地方聲明一個變量。而且,建議你盡量等需要用的時候再去定義一個變量。

轉變三、????????????? 引用類型的引入

先來看下面一個例子:

#include

void swap(int a,int b)

{

???? int temp=a;

???? a=b;

???? b=temp;

}

int main()

{

???? int a=1,b=2;

???? swap(a,b);

???? printf("a=%d,b=%d",a,b);

}

輸出結果:

a=1,b=2

寫出這個程序的人,它編寫的swap函數本意是想讓兩個參數的值互相交換。但是,我們知道,C語言里參數的傳遞都是以值傳遞的方式進行的,也就是說,這里將把作為實參的a,b的值賦值給作為形參的a,b,這樣形參與實參并不是同一片內存空間,對形參a所做的賦值操作根本不會對實參a有任何的影響,所以最終會發現這個swap函數根本沒有起到任何作用。

作為C語言高手的你會告訴我,想實現兩個數交換,應該這么寫:

#include

void swap(int *a,int *b)

{

???? int temp=*a;

???? *a=*b;

???? *b=temp;

}

int main()

{

???? int a=1,b=2;

???? swap(&a,&b);

???? printf("a=%d,b=%d",a,b);

}

確實,這個程序能達到交換兩個值的效果,可是,我們要操作的是兩個變量的值,而不是其地址,卻需要往函數里傳遞兩個變量的地址。總是讓人感到不太直觀。

C++里就出現了引用類型。

這樣,原程序就可以這么寫

#include

void swap(int &a,int &b)???????? //只有這一行與原來的程序不同

{

???? int temp=a;

???? a=b;

???? b=temp;

}

int main()

{

???? int a=1,b=2;

???? swap(a,b);

???? printf("a=%d,b=%d",a,b);

}

這樣,這個swap函數就對它的兩個參數a,b的值進行了交換。


你可能會驚奇的問:什么?竟然在形參聲明時對a取地址?

咱們先撇開上面的例子來說一下引用類型變量:

1.?????? 引用類型相當于給變量起了一個別名

變量名就是一個用以標識一片內存區域的標識符,而聲明引用變量就相當于給這片內存區域重新起了一個名字。這句話你現在看肯定不太清楚它是什么意思,但,請帶著這句話看下面的幾點


2.?????? 引用類型變量的初始化

定義一個引用類型的變量時,這個&僅僅是用來表示聲明的變量是是引用類型變量(而并非取地址的意思)。如

int a=123;

int &b=a;??????

b就是一個引用類型變量,它綁定在一個int類型的變量a上。如果現在輸出b的值,就會得到b的值為123.

我們定義一個引用類型的變量時,必須用它所綁定的類型的一個變量對它進行初始化。

int a=123;

int &b1=a;????? //正確

int &b2;??????? //錯誤,必須初始化

int &b3=123;??? //錯誤,必須用int型變量來進行初始化,而不能用常量來初始化。


3.?????? 對引用類型變量進行賦值

先來看下面一段代碼。

int a=123,b=234;

int &c=a;

c=b;

這時,a和c的值是多少?

有兩種想法,第一種想法是c=b的意思和初始化時c=a那里差不多,表示讓c從現在起開始綁定到b.所以a的值是123,c的值是234,這種想法很有依據,那就是指針變量就是這個樣子,不過我可以很負責任的告訴你,這種想法在這里是錯誤的,至少,編譯器和你的想法不一樣。事實上,除了初始化的時候之外,你對一個引用類型的變量進行任何的操作,都相當于對它所綁定的變量進行了相同的操作,這個“任何”是包括賦值操作的。所以,這里c=b就相當于是a=b,執行了該操作后,a,c的值都變為234。


好,現在我們再來回頭看一下前面那個程序,為了區別形參a,b和實參a,b,這里我把實參a,b記作a',b'.

形參列表里的int &a,int &b就相當于int &a'=a,int &'b=b

這樣,a'綁定到了a上,成了a的另一個名字,b'就成了b的另一個名字,因此,對a',b'做的任何操作,都相當于對a,b進行了對應操作,這也就使形參與實參共用了同一片內存地址,便可以實現在函數中改變實參的值了。

這樣,swap函數才真正直到了交換兩個參數的值的作用。

4.?????? const引用

const引用就是綁定在const對象上的引用。

如 const int data=123;

const int& data2=data;????? //正確

int &data3=data;??????????????? //錯誤

//不能將int&型變量綁定在const int型變量上

但,可以用const int&變量綁定在int型變量上。如:

int data=123;

const int &data2=data;????? //正確

此后,可以利用給data賦值來給這片內存區域賦值,但卻不能給data2賦值,因為data2是const int&型。


由于引用類型作為參數時,不是真正的值傳遞,形參與實參共用同一片內存區域,所以在用一些大的結構體對象或大的類對象(類是一種與結構體類似,但比結構體強大得多的東西,本書后面大部分內容都是在講它)作參數時,可以把函數的形參聲明為引用類型,以減小值傳遞所帶來的開銷。而且,在多數情況下,為了避免做為實參的對象在函數內不被修改,可以把形參設置為const引用。

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1GP328和GP88S對講機的維修實列資料合集免費下載
  2. 0.03 MB   |  9次下載  |  10 積分
  3. 2i.MX Linux開發實戰指南—基于野火i.MX系列開發板
  4. 17.86 MB   |  6次下載  |  免費
  5. 3I2C噪聲毛刺濾波
  6. 52.3KB   |  5次下載  |  免費
  7. 4OV426相機橋接處理器規格書
  8. 1.63 MB   |  4次下載  |  5 積分
  9. 5新概念模擬電路(電子版全集)
  10. 29.33 MB   |  3次下載  |  免費
  11. 6Type-C VL160數據手冊
  12. 0.92 MB   |  3次下載  |  3 積分
  13. 7VC 9805A+電路圖和PCB圖(修改版)
  14. 1.19 MB   |  1次下載  |  免費
  15. 8電流電壓傳感器V10
  16. 8.02 MB  |  1次下載  |  免費

本月

  1. 1ACDC變換器的原理圖免費下載
  2. 0.26 MB   |  65次下載  |  免費
  3. 2無刷電機控制方案設計合作
  4. 1.05 MB   |  19次下載  |  免費
  5. 3美的超薄電磁爐TM-S1-09B主板原理圖
  6. 0.08 MB   |  12次下載  |  免費
  7. 4GP328和GP88S對講機的維修實列資料合集免費下載
  8. 0.03 MB   |  9次下載  |  10 積分
  9. 5舒爾SLX4無線話筒接收機原理圖:二次變頻超外差部分
  10. 0.27 MB   |  8次下載  |  免費
  11. 6TPS55288布局指南
  12. 1.75MB   |  7次下載  |  免費
  13. 7i.MX Linux開發實戰指南—基于野火i.MX系列開發板
  14. 17.86 MB   |  6次下載  |  免費
  15. 8I2C噪聲毛刺濾波
  16. 52.3KB   |  5次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935115次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420061次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191363次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183329次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81580次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73805次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65985次下載  |  10 積分
主站蜘蛛池模板: 亚洲欧美日韩国产精品26u| 国产精品久久久久久免费播放 | 双性精跪趴灌满h室友4p| 娇女的呻吟亲女禁忌h16| a视频在线观看免费| 亚洲福利视频导航| 男的插曲女的下面免费APP| 国产强奷糟蹋漂亮邻居在线观看| 2021全国精品卡一卡二| 午夜勾魂曲| 秋霞伦理电影在2017韩国在线伦| 国产一区二区三区在线看片| yellow免费影视大全| 伊在香蕉国产在线视频| 午夜伦理 第1页| 欧美色妞AV重囗味视频| 久久视频这只精品99re6| 国产精品久久久久影院嫩草| 97影院理论午夜伦不卡偷| 亚洲免费视频在线观看| 日本中文字幕巨大的乳专区| 久久久精品久久久久久| 国产午夜亚洲精品不卡电影| 超碰97 总站 中文字幕| 18美女腿打开无遮软件| 亚洲一卡二卡三卡四卡无卡麻豆| 少妇内射视频播放舔大片| 男人扒开添女人屁股| 久久精品国产eeuss| 国产亚洲999精品AA片在线爽| 多人乱肉高hnp| 不良网站进入窗口软件下载免费 | 40岁东北老阿姨无码| 亚洲一区电影在线观看| 午夜理伦大片一级| 少妇内射兰兰久久| 日日射日日操| 色呦呦导航| 忘忧草在线影院www日本| 日韩av片无码一区二区不卡电影| 欧美日韩一区不卡在线观看|