最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言修煉之路悟徹?cái)?shù)組真妙理?巧用下標(biāo)破萬(wàn)敵下篇

 更新時(shí)間:2022年02月26日 15:49:58   作者:玄澈_  
在C語(yǔ)言和C++等語(yǔ)言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲(chǔ)類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來(lái)指向若干個(gè)字符串,使字符串處理更加方便、靈活

(壹)冒泡排序

1.1冒泡排序的設(shè)計(jì)

冒泡排序(Bubble Sort)也是一種簡(jiǎn)單直觀的排序算法。它重復(fù)地走訪過(guò)要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過(guò)來(lái)。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說(shuō)該數(shù)列已經(jīng)排序完成。這個(gè)算法的名字由來(lái)是因?yàn)樵叫〉脑貢?huì)經(jīng)由交換慢慢"浮"到數(shù)列的頂端。

1.2冒泡排序的步驟

  • 比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。
  • 對(duì)每一對(duì)相鄰元素作同樣的工作,從開(kāi)始第一對(duì)到結(jié)尾的最后一對(duì)。這步做完后,最后的元素會(huì)是最大的數(shù)。
  • 針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)。
  • 持續(xù)每次對(duì)越來(lái)越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較。

??動(dòng)圖演示1(數(shù)據(jù)較?。?/p>

??動(dòng)圖演示2(數(shù)據(jù)較大)

1.3冒泡排序的實(shí)現(xiàn)

Tips:每一趟冒泡排序后都會(huì)減少一個(gè)需要比較的數(shù) -->  因?yàn)槊恳惶说拿芭菖判蚨紩?huì)將所比較的最大/最小值移動(dòng)到數(shù)組的最后面

(貳)數(shù)組作為函數(shù)參數(shù)

往往我們?cè)趯?xiě)代碼的時(shí)候,會(huì)將數(shù)組作為參數(shù)傳個(gè)函數(shù),比如:我要實(shí)現(xiàn)一個(gè)冒泡排序(這里要講算法思想)函數(shù)將一個(gè)整形數(shù)組排序。 那我們將會(huì)這樣使用該函數(shù):

2.1冒泡排序函數(shù)的錯(cuò)誤設(shè)計(jì)

接下來(lái)看一個(gè)例子

最后結(jié)果:

并沒(méi)有預(yù)料中的達(dá)到排序的作用

在我們之前的學(xué)習(xí)中,我們知道了 數(shù)組名表示的數(shù)組首元素的地址 

數(shù)組名在傳遞給函數(shù)的時(shí)候,會(huì)降級(jí)變成首元素的地址

數(shù)組名單獨(dú)放在sizeof內(nèi)部的時(shí)候 ,如:sizeof(arr),這里的arr表示整個(gè)數(shù)組而不是首元素的地址

對(duì)數(shù)組名進(jìn)行&取地址后的操作

我們知道,對(duì)指向數(shù)組元素的指針進(jìn)行自增運(yùn)算是跳過(guò)一個(gè)元素(所占字節(jié)數(shù)的地址),其實(shí)本質(zhì)是跳過(guò)一個(gè)其指針類型大小。對(duì)數(shù)組名進(jìn)行取地址后獲得的是數(shù)組的地址,如果將它和數(shù)組首元素地址以及數(shù)組名打印出來(lái),會(huì)發(fā)現(xiàn)它們的值是一樣的。但如果對(duì)&arr進(jìn)行+1等操作,就會(huì)發(fā)現(xiàn)跳過(guò)的不是一個(gè)元素的大小,而是一個(gè)數(shù)組的大小。

2.2冒泡排序函數(shù)的正確設(shè)計(jì)

當(dāng)數(shù)組傳參的時(shí)候,實(shí)際上只是把數(shù)組的首元素的地址傳遞過(guò)去了。所以即使在函數(shù)參數(shù)部分寫(xiě)成數(shù)組的形式:int arr[]表示的依然是一個(gè)指針:int *arr。那么,函數(shù)內(nèi)部的sizeof(arr)結(jié)果是4。

(叁)對(duì)數(shù)組名的拓展解析

數(shù)組名就是首元素的地址,但是有兩個(gè)例外

  • sizeof(數(shù)組名),這里的數(shù)組名表示整個(gè)數(shù)組,sizeof(數(shù)組名)表示的是整個(gè)數(shù)組的大小
  • &數(shù)組名,這里的數(shù)組名表示的是整個(gè)數(shù)組,取出的是整個(gè)數(shù)組的地址

 &arr取出的是整個(gè)數(shù)組的地址,所以 arr + 1后跳過(guò)了整個(gè)數(shù)組的大小為 

4 * 10 = 40 個(gè)字節(jié)的地址大小

C游記之旅至此,大家也掌握了一定的技能,推薦大家可以跟著下面這篇文章,去實(shí)現(xiàn)一個(gè)屬于自己的三子棋游戲哦 

【入門(mén)級(jí)C語(yǔ)言小游戲】——“三子棋” 

到此這篇關(guān)于C語(yǔ)言修煉之路悟徹?cái)?shù)組真妙理 巧用下標(biāo)破萬(wàn)敵下篇的文章就介紹到這了,更多相關(guān)C語(yǔ)言 數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 聊一聊C++虛函數(shù)表的問(wèn)題

    聊一聊C++虛函數(shù)表的問(wèn)題

    C++是面向?qū)ο蟮恼Z(yǔ)言(與C語(yǔ)言主要區(qū)別),所以C++也擁有多態(tài)的特性。下面通過(guò)代碼看下C++虛函數(shù)表的問(wèn)題,感興趣的朋友一起看看吧
    2021-10-10
  • C 語(yǔ)言基礎(chǔ)教程(一)顏色加亮

    C 語(yǔ)言基礎(chǔ)教程(一)顏色加亮

    C 語(yǔ)言基礎(chǔ)教程(一)顏色加亮...
    2007-02-02
  • C語(yǔ)言實(shí)戰(zhàn)之浪漫煙花表白程序代碼

    C語(yǔ)言實(shí)戰(zhàn)之浪漫煙花表白程序代碼

    這篇文章主要介紹了C語(yǔ)言實(shí)戰(zhàn)之浪漫煙花表白程序代碼,需要的朋友可以參考下
    2021-04-04
  • MATLAB中count函數(shù)用法示例代碼

    MATLAB中count函數(shù)用法示例代碼

    這篇文章主要介紹了MATLAB中的count函數(shù),用于計(jì)算字符串中模式的出現(xiàn)次數(shù),它可以處理單個(gè)模式和模式數(shù)組,并且可以忽略大小寫(xiě),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • 詳解C語(yǔ)言結(jié)構(gòu)體中的char數(shù)組如何賦值

    詳解C語(yǔ)言結(jié)構(gòu)體中的char數(shù)組如何賦值

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言結(jié)構(gòu)體中的char數(shù)組如何賦值的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • C++數(shù)據(jù)結(jié)構(gòu)之list詳解

    C++數(shù)據(jù)結(jié)構(gòu)之list詳解

    list是一種序列式容器。list容器完成的功能實(shí)際上和數(shù)據(jù)結(jié)構(gòu)中的雙向鏈表是極其相似的,list中的數(shù)據(jù)元素是通過(guò)鏈表指針串連成邏輯意義上的線性表,也就是list也具有鏈表的主要優(yōu)點(diǎn),即:在鏈表的任一位置進(jìn)行元素的插入、刪除操作都是快速的
    2021-11-11
  • 簡(jiǎn)單的漢諾塔問(wèn)題解法代碼

    簡(jiǎn)單的漢諾塔問(wèn)題解法代碼

    漢諾塔本是C語(yǔ)言開(kāi)門(mén)就學(xué)的東西,簡(jiǎn)單的漢諾塔問(wèn)題解法代碼
    2013-03-03
  • VS2019調(diào)試C語(yǔ)言程序(監(jiān)視操作)的詳細(xì)步驟

    VS2019調(diào)試C語(yǔ)言程序(監(jiān)視操作)的詳細(xì)步驟

    在很多時(shí)候我們?cè)趯?xiě)程序的過(guò)程中會(huì)發(fā)現(xiàn)一些非編程錯(cuò)誤的問(wèn)題,這樣的問(wèn)題很難直接分辨出來(lái),但是我們可以用調(diào)試了一步一步的模擬程序運(yùn)行的過(guò)程,來(lái)找出程序的錯(cuò)誤,下面這篇文章主要給大家介紹了關(guān)于VS2019調(diào)試C語(yǔ)言程序(監(jiān)視操作)的詳細(xì)步驟,需要的朋友可以參考下
    2022-11-11
  • C++中的new/delete、構(gòu)造/析構(gòu)函數(shù)、dynamic_cast分析

    C++中的new/delete、構(gòu)造/析構(gòu)函數(shù)、dynamic_cast分析

    這篇文章主要介紹了C++中的new/delete、構(gòu)造/析構(gòu)函數(shù)、dynamic_cast分析 本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • linux C 打印錯(cuò)誤信息和標(biāo)準(zhǔn)輸入輸出詳細(xì)介紹

    linux C 打印錯(cuò)誤信息和標(biāo)準(zhǔn)輸入輸出詳細(xì)介紹

    這篇文章主要介紹了linux C 打印錯(cuò)誤信息和標(biāo)準(zhǔn)輸入輸出詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-12-12

最新評(píng)論

宣化县| 丰宁| 石柱| 锡林浩特市| 浪卡子县| 军事| 沙坪坝区| 株洲市| 光泽县| 准格尔旗| 天峻县| 乾安县| 麟游县| 昔阳县| 金昌市| 讷河市| 梅河口市| 明溪县| 桃江县| 嵩明县| 建阳市| 岗巴县| 澄迈县| 启东市| 襄城县| 香格里拉县| 六安市| 邢台市| 广元市| 潼南县| 迁西县| 阿图什市| 涡阳县| 固始县| 鄂托克前旗| 大连市| 道孚县| 临湘市| 昆明市| 长葛市| 滦平县|