中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言數組是什么意思

發布時間:2022-01-05 11:05:24 來源:億速云 閱讀:151 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關C語言數組是什么意思的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

什么是數組

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

C語言數組是什么意思

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

數組的下標

數組下標是從0開始的,假設,訪問arr[5]元素時,訪問的是數組的第6個元素,訪問arr[0]時,訪問的是數組的第一個元素。

一維數組

一維數組創建

一維數組是常見的數組,創建方法是:數據類型 + 數組名 [ 元素個數 ];

int arr[10];

C99的標準之前,當數組在創建時,方括號內的數組元素個數只能是常量,使用的常量也必須是真正意義上的常量,比如用const修飾的變量有了常屬性,但不是真正意義的常量,而由define定義的常量可以用來做數組元素個數。而C99之后數字方括號內的元素可以使用變量,而使用變量的做數組元素個數的數組,叫做變長數組。

一維數組初始化

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

一維數組的賦值

用循環變量訪問數組下標,給數組進行賦值。%s對應的是輸入一個字符串,需要提供一個字符數組來存儲,數組名是一個地址,所以不用加&取地址。

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

一維數組在內存的存儲方式

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

C語言數組是什么意思

二維數組

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

C語言數組是什么意思

二維數組的創建和初始化

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

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};//二維數組可以不初始化行,但必須初始化列

二維數組的賦值

給二維數組賦值,與一維數組一樣都需要循環來搞定,但是二維數組需要在一維數組的循環基礎上再嵌套一層循環。

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訪問列
    }
}

數組越界

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

C語言數組是什么意思

C語言數組是什么意思

 數組名

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

C語言數組是什么意思

 數組的傳參方式

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

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

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

C語言數組是什么意思

感謝各位的閱讀!關于“C語言數組是什么意思”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

资源县| 馆陶县| 鄢陵县| 莫力| 高雄市| 梧州市| 丰原市| 四会市| 河间市| 洮南市| 准格尔旗| 廉江市| 襄垣县| 鞍山市| 奉新县| 英山县| 辰溪县| 南江县| 甘孜县| 临漳县| 吉林省| 南和县| 岚皋县| 平山县| 横山县| 博罗县| 鄯善县| 荃湾区| 常宁市| 田东县| 瑞昌市| 旬邑县| 临泉县| 阿尔山市| 凯里市| 永城市| 九江县| 西盟| 宿州市| 伊宁县| 南丹县|