c語言之陣列

2021-10-10 13:11:39 字數 2960 閱讀 1993

假如我們要儲存1到10的數字,該怎麼儲存呢?

在c語言中給出了陣列的定義:一組相同型別型別的集合

int arr[10] = ;//定義乙個大小為10的陣列,最多放10個元素

對於陣列的使用,我們來看一段**:

#define _crt_secure_no_warnings 1

#include//整型陣列,陣列的下標是從0開始的

int main();/*可以不去寫陣列的長度,此陣列的長度是依據後面的的

數字長度來確定的,但是若列印輸出時越界,則所列印的數字

此時便是隨機的了*/

int arr[7] = ;//當確認陣列長度後,若陣列並未放滿,則陣列剩餘預設值為0

int arr1[3];//預設值是隨機值,並不是0,輸出值為-858993460,-858993460,- 858993460

for (int i = 0; i <= 11; i++)

printf("\n");

for (int i = 0; i <= 6; i++)

printf("\n");

for (int i = 0; i <= 2; i++)

return 0;

}

針對上述**,我們來進行分析:

int arr2 = ;/*可以不去寫陣列的長度,此陣列的長度是依據後面的的數字長度來確定的,但是若列印輸出時越界,則所列印的數字此時便是隨機的了*/
此處我們定義了乙個沒有陣列大小的arr2陣列,此處可以不用定義陣列的大小,原因是其陣列的長度是依據後面的數字長度來確定的,但是若列印輸出時越界,則所列印的數字此時便是隨機的了。

下面對此陣列進行列印輸出:

for (int i = 0; i <= 11; i++)

輸出結果為:

此時我們可以看到此時陣列arrr2[0]-arr[7]列印的是1,2,3,4,5,6,7,8,9,而從arr[8] - arr[11]則是隨機生成的了,分別為-858993460,19922248,7481961,1,即若列印輸出時越界,則所列印的數字此時便是隨機的了。

int arr[7] = ;//當確認陣列長度後,若陣列並未放滿,則陣列剩餘預設值為0
此處定義了乙個大小為7的整形陣列,但是細心的同學會發現陣列並沒有放滿,那麼此時若陣列並未放滿的話,陣列剩餘的預設值都為0

下面我們來除錯下上述**:

從除錯中我們可以看出當陣列未放滿時,陣列剩餘預設值都為0,輸出結果如下:

int arr1[3];//預設值是隨機值,並不是0,輸出值為-858993460,-858993460,- 858993460
此處定義了乙個大小為3的整形陣列,但是並沒有給出具體的儲存的數值,此時大多數同學會認為此處三個值應該預設都為0,這也是大家最容易犯錯的乙個點,因為此時預設的值是系統隨機給出的,例如此陣列的輸出結果為-858993460,-858993460,- 858993460。

下面我們對上述**進行測試:

可以看出當陣列為空時,其預設值並不為0,是系統隨機給出的,下面給出執行結果:

int a = 10;

int b[a] = ;//在定義陣列時中的數字一定要是個常量

此處經常會有同學這樣定義乙個陣列,我們會發現此時會報錯,原因是在定義陣列時內必須為乙個常量,此時a為變數,不能放進去

此時有同學會想到乙個關鍵字,也就是const,那麼此時我們來思考,如果在int a前加上const,即如下圖所示,那麼此時結果如何?

const int a = 10;

int b[a] = ;

此時我們會發現編譯器還是會報錯,與c++不同的是,在c語言中,加上const後其本質上還是乙個變數,我們稱之為常變數,而在c++中加上const後為乙個常量,所以此時加上const後不能改變其是變數的事實.

我們都知道我們如果要遍歷列印乙個陣列的話,一般此時可以直接在主函式中寫乙個陣列的遍歷即可,那麼此時我們若想要使用函式的呼叫該怎麼寫呢,下面我們來看一段**,並逐個分析:

#define _crt_secure_no_warnings 1

#include//陣列名代表了首元素的位址

void get(int v,int len)

; printf("%d\n",&a);

printf("%d\n",&b);

printf("%d\n",&c[0]);

printf("%d\n",&c[1]);

printf("%d\n",&c[2]);

return 0;

}

此時我們來對**進行分析:區域性變數首先都儲存於棧上,棧的特點為先進後出,那麼此時a先進去,然後b進去,那麼到底在棧上是如何儲存的呢?

C語言之陣列

c語言之陣列 一,一維陣列 1,一維陣列的定義 型別符 陣列名 常量表示式 注 1 常量表示式中可以包括常量和符號常量.int a 3 5 是合法的,int a n 是不合法的,c語言不允許對陣列的大小作動態定義 2 如果在被呼叫的函式 不包括主函式 中定義陣列,起長度可以是變數或非常量表示式,可稱...

C語言之陣列

c語言陣列 一 陣列的概念 用來儲存一組資料的構造資料型別 特點 只能存放一種型別的資料,如全部是int型或者全部是char型,陣列裡的資料成為元素。二 陣列的定義 格式 型別 陣列名 元素個數 舉例 儲存5個人的年齡 int agrs 5 在記憶體中開闢4x5 20個位元組的儲存空間 可以在定義陣...

C語言之陣列

一 一維陣列 1.1 一維陣列的定義 1.一維陣列是指數組中的每個元素只帶有乙個下標的陣列。定義方式為 型別說明符 陣列名 常量表示式 1.2 一維陣列元素的引用 1.陣列元素的引用形式為 陣列名 下標表示式 2.乙個陣列元素實質上市乙個變數名,代表記憶體中的乙個儲存單元,乙個陣列佔據的是一連串連續...