亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語言數(shù)組詳細(xì)介紹

 更新時間:2022年01月05日 08:41:26   作者:秋風(fēng)不過青嵐  
大家好,本篇文章主要講的是C語言數(shù)組詳細(xì)介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

什么是數(shù)組

數(shù)組(Array)是一種用來存儲同一種類型的集合,是一種有序的線性結(jié)構(gòu)表。并且數(shù)組元素的地址是連續(xù)的。

數(shù)組最大的優(yōu)點就是支持隨機訪問,當(dāng)想訪問數(shù)組的某個數(shù)時,只需要找到數(shù)組的對應(yīng)下標(biāo)就可以直接找到該數(shù)組對應(yīng)元素。但是數(shù)組也有相應(yīng)的缺點,那就是數(shù)組的元素個數(shù)和數(shù)組空間大小在創(chuàng)建時就已經(jīng)被固定死了,如果數(shù)組的空間沒有使用完也會造成空間浪費,并且因為數(shù)組的地址是連續(xù)的,這本應(yīng)該是一個優(yōu)點的,但是這導(dǎo)致數(shù)組在進行刪除或增加元素時需要O(n)才能完成。

數(shù)組的下標(biāo)

數(shù)組下標(biāo)是從0開始的,假設(shè),訪問arr[5]元素時,訪問的是數(shù)組的第6個元素,訪問arr[0]時,訪問的是數(shù)組的第一個元素。

一維數(shù)組

一維數(shù)組創(chuàng)建

一維數(shù)組是常見的數(shù)組,創(chuàng)建方法是:數(shù)據(jù)類型 + 數(shù)組名 [ 元素個數(shù) ];

int arr[10];

C99的標(biāo)準(zhǔn)之前,當(dāng)數(shù)組在創(chuàng)建時,方括號內(nèi)的數(shù)組元素個數(shù)只能是常量,使用的常量也必須是真正意義上的常量,比如用const修飾的變量有了常屬性,但不是真正意義的常量,而由define定義的常量可以用來做數(shù)組元素個數(shù)。而C99之后數(shù)字方括號內(nèi)的元素可以使用變量,而使用變量的做數(shù)組元素個數(shù)的數(shù)組,叫做變長數(shù)組。

一維數(shù)組初始化

int arr[10] = {1,2,3,4,5,6,7,8,9,10};//整形數(shù)組
int arr[] = {0}//不指定大小但必須初始化
char ch[10] = {'1','2','3'};//字符數(shù)組
char str[10] = "abcde";//字符串?dāng)?shù)組

一維數(shù)組的賦值

用循環(huán)變量訪問數(shù)組下標(biāo),給數(shù)組進行賦值。%s對應(yīng)的是輸入一個字符串,需要提供一個字符數(shù)組來存儲,數(shù)組名是一個地址,所以不用加&取地址。

int arr[10] = {0};
for(int i = 0;i < 10;i++)
{
    scanf("%d",&arr[i];
}
 
char str[10] = {0};
scanf("%s",str);//字符串賦值可以不取地址和循環(huán)

一維數(shù)組在內(nèi)存的存儲方式

一維數(shù)組的元素地址是連續(xù)的,也就是元素的地址一個緊挨著一個。地址在內(nèi)存是以二進制進行存儲的,但是如果以二進制來展示的話就會非常的長而且也未必好理解,所以就由十六進制來進行展示。(下圖)觀察下圖可發(fā)現(xiàn),地址的是由低到高隨著下標(biāo)增長而增長的,有規(guī)律的遞增,且每個數(shù)組元素地址都相差了四個字節(jié),相差的四個字節(jié)是一個int整形的空間大小。

二維數(shù)組

二維數(shù)組在我們的邏輯概念中可以是一個矩陣,但在內(nèi)存中與一維數(shù)組一樣是一個連續(xù)的地址空間。通常我們將二維數(shù)組的第一個方括號看做行,第二個方括號看做是列。

二維數(shù)組的創(chuàng)建和初始化

二維數(shù)組與一維數(shù)組只是多加了一個方括號。數(shù)據(jù)類型 + 數(shù)組名[元素個數(shù)][元素個數(shù)];

int arr[3][3] = {1,2,3,4};//4自動存到arr[1][0]的位置
int arr[3][3] = {{1,2,3},
                 {4,5,6},
                 {7,8,9}};//一個大括號代表一行,每個大括號以逗號隔開
int arr[][3] = {0};//二維數(shù)組可以不初始化行,但必須初始化列

二維數(shù)組的賦值

給二維數(shù)組賦值,與一維數(shù)組一樣都需要循環(huán)來搞定,但是二維數(shù)組需要在一維數(shù)組的循環(huán)基礎(chǔ)上再嵌套一層循環(huán)。

int arr[3][3] = {0};
for(int i = 0;i < 3;i++)
{
    for(int j = 0;j < 3;j++)
    {
        scanf("%d",&arr[i][j]);//i訪問行,j訪問列
    }
}

數(shù)組越界

數(shù)組的下標(biāo)范圍是有限的,因為數(shù)組的下標(biāo)是由0開始的,所以數(shù)組能訪問的的下標(biāo)就是數(shù)組元素個數(shù)減一個(N-1),當(dāng)訪問了不屬于數(shù)組元素地址范圍的空間,就叫做數(shù)組越界。假設(shè)一個arr[10]的數(shù)組,當(dāng)訪問下標(biāo)時大于等于10的時候,就會導(dǎo)致數(shù)組向后溢出,也叫下溢出,相對的,當(dāng)數(shù)組向數(shù)組第一個元素的前面越界訪問時,也就是下標(biāo)小于0,就叫上溢出,越界訪問是非常危險的一個操作,因為有的編譯器沒有檢查數(shù)組是否越界的功能,所以,當(dāng)程序員在寫代碼所以數(shù)組時,要非常注意數(shù)組是否存在越界問題。二維數(shù)組的行和列也同樣

 數(shù)組名

數(shù)組名是指向數(shù)組首元素地址的指針,即下標(biāo)為0的元素的地址的指針。上面說,由于數(shù)組的地址是連續(xù)的,所以當(dāng)找到數(shù)組的首元素就可以找到數(shù)組的其他成員。如果用sizeof(數(shù)組名),這里的數(shù)組名代表的是整個數(shù)組,計算的是整個數(shù)組的大小。再除以sizeof(下標(biāo)為0的地址),就可以得到數(shù)組的元素個數(shù)。

 數(shù)組的傳參方式

當(dāng)要將數(shù)組作為函數(shù)參數(shù)進行傳參時,需要在函數(shù)的傳參位置放一個數(shù)組名,形參部分就會接收到一個數(shù)組的首元素地址的指針,而接收這個指針就也需要同類型的指針。在形參部分,數(shù)組可以有兩種形式表示,一種是以數(shù)組的形式,一種是以指針的形式,兩種方式都可以對數(shù)組進行傳參。

void bubble_sort(int arr[])
void bubble_sort(int* arr)

當(dāng)數(shù)組在傳參之后,函數(shù)部分是不能計算數(shù)組的元素個數(shù)的。因為形參接收的只是一個數(shù)組的首元素地址的指針,而不是整個數(shù)組,計算數(shù)組的時候也只是計算了數(shù)組的首元素地址的大小,然后再除以首元素地址的大小,所以理所當(dāng)然的得到一個1。所以,當(dāng)數(shù)組需要傳參,并且還需要用到數(shù)組的元素個數(shù)時,要先計算好數(shù)組元素個數(shù),將計算好的元素個數(shù)和數(shù)組一起傳參。

 結(jié)尾

數(shù)組其實不只有一維和二維數(shù)組,還有三維數(shù)組甚至更高維,但是在情況下很少會用到,而且對于初學(xué)者用到二維數(shù)組就已經(jīng)足以。

到此這篇關(guān)于C語言數(shù)組詳細(xì)介紹的文章就介紹到這了,更多相關(guān)C語言數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用opencv拉伸圖像擴大分辨率示例

    使用opencv拉伸圖像擴大分辨率示例

    這篇文章主要介紹了使用opencv拉伸圖像擴大分辨率示例,需要的朋友可以參考下
    2014-04-04
  • c++重載運算符時返回值為類的對象或者返回對象的引用問題

    c++重載運算符時返回值為類的對象或者返回對象的引用問題

    這篇文章主要介紹了c++重載運算符時返回值為類的對象或者返回對象的引用問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語言模擬內(nèi)存函數(shù)分析之mencpy與memmove

    C語言模擬內(nèi)存函數(shù)分析之mencpy與memmove

    這篇文章主要介紹了C語言詳解如何模擬內(nèi)存函數(shù),用到了mencpy與memmove兩個函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • 如何在C++中通過模板去除強制轉(zhuǎn)換

    如何在C++中通過模板去除強制轉(zhuǎn)換

    本文講解的是如何在C++中通過模板去除強制轉(zhuǎn)換,在編程工作中應(yīng)盡量少使用強制類型轉(zhuǎn)換,模板有助于我們實現(xiàn)這一目的,需要的朋友可以參考下
    2015-07-07
  • 數(shù)據(jù)結(jié)構(gòu)之紅黑樹詳解

    數(shù)據(jù)結(jié)構(gòu)之紅黑樹詳解

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之紅黑樹詳解,紅黑樹是一種自平衡二叉查找樹,它的統(tǒng)計性能要好于平衡二叉樹(AVL樹),因此,紅黑樹在很多地方都有應(yīng)用,需要的朋友可以參考下
    2014-08-08
  • Clion(CMake工具)中引入第三方庫的詳細(xì)方法

    Clion(CMake工具)中引入第三方庫的詳細(xì)方法

    這篇文章主要介紹了Clion(CMake工具)中引入第三方庫的詳細(xì)方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • C++的靜態(tài)聯(lián)編和動態(tài)聯(lián)編

    C++的靜態(tài)聯(lián)編和動態(tài)聯(lián)編

    本文闡述了靜態(tài)聯(lián)編和動態(tài)聯(lián)編的概念和區(qū)別,通過具體實例分析了實現(xiàn)動態(tài)聯(lián)編的條件,指出了虛函數(shù)是實現(xiàn)動態(tài)聯(lián)編的基礎(chǔ)。
    2016-03-03
  • C語言實現(xiàn)頁面置換 先進先出算法(FIFO)

    C語言實現(xiàn)頁面置換 先進先出算法(FIFO)

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)頁面置換,先進先出算法(FIFO),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C++string中的insert()插入函數(shù)詳解

    C++string中的insert()插入函數(shù)詳解

    這篇文章主要介紹了C++string中的insert()插入函數(shù),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • C++實現(xiàn)五子棋游戲(注釋版)

    C++實現(xiàn)五子棋游戲(注釋版)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評論