日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言全方位講解數組的使用_C 語言

作者:小劉好好學習 ? 更新時間: 2022-06-12 編程語言

接著上次的操作符的詳解,讓我們來簡單了解C語言里的數組。

一維數組的創建和初始化

1.數組的創建

數組是一組相同類型的元素的集合。

2.數組創建方式?

type_t(數組類型) arr_name(數組名) [const_n](用來指定數組大小)

3.數組的初始化

數組的初始化是在其定義的時候就應該執行的,如:為5個已經知道的整形數據進行排序

//正確
int Arr[5] = { 1, 2, 3, 4, 5 };
//而不能用下面這種方式
int Arr[5];
Arr[5] = { 1, 2, 3, 4, 5 };

因為對于 Arr[5] = 來說,這是一個賦值操作,將右值賦值給左值,一切常數、字符和字符串都是右值。在這里 { 1, 2, 3, 4, 5?}; 并不是右值的一種,所以這是錯誤的。

另一個錯誤是,Arr[5] 下標為 5 這個元素實際上并不存在的屬于數組的越界。

有數字類型的初始化,自然也有字符類型的初始化

字符類型初始化的兩種方式:

char arr[5]={'a','b','c','d','e'};
char arr[5]= "abcde ";

1.空字符是字符串的終止符(空字符本身不是字符串的一部分,所以字符串的長度并不包含空字符)

2.操作字符串時,必須保證字符串以空字符(\0)結尾(不以空字符結尾的字符序列,不是字符串)。

一維數組的使用

用單引號形式初始化的數組代表只有這些數據,并且在末端不包含\0

總結

  • 數組是使用下標來訪問的,下標是從0開始。
  • 數組的大小可以通過計算得到。
  • Int sz = sizeof(arr)/sizeof(arr[0])

一維數組的存儲

當我們定義了長度為5的整型數組,操作系統就會為其分配連續的五個內存地址。

這些地址用來存放數據,每一個地址所占的字節是數組的數據類型所決定的。 如int類型的每一個地址占據著4個字節,double類型的8個。

因為每個整形大小為四個字節,所以如圖每個地址間隔為4。

講完了一維數組的知識點,讓我們簡單了解一下二維數組

二維數組的創建與初始化?

1.二維數組的創建

第一個括號指定行,第二個括號指定列

可以只對部分元素賦值,未賦值的元素自動取“零”值。例如:

int arr[3][4]={1,2,3,4,5}

2.二維數組的初始化

第一行:123 第二行:45

二維數組的列不能省略行可以在括號內大括號分割明確時省略

二維數組的存儲

二維數組在內存中的存儲

如果定義一個這樣的二維數組int a[3][4]={undefined{1,3,5,7},{9,11,13,15},{17,19,21,23}};則其在內存中的表示可能下面這樣的。

由上圖可以看出,在內存中二維數組是按照行主序進行存儲的,從內存的角度上看,二維數組本質就是一個一維數組。如果把二維數組的每一行看成一個整體,即看成一個數組中的一個元素,那么整個二維數組就是一個一維數組。而二維數組的名字代表二維數組第0行的首地址(注意它是代表一行元素的首地址,而不是第0行第0列元素的首地址,雖然是相等的,但不能這么理解,所以在沒有強制轉換的情況下,二維數據要么通過行指針進行參數傳遞,要么通過二維指針進行參數傳遞)。?

數組的越界

這里講的數組長度存在一個界,而一旦超過了這個大小,就會發生一些未知的錯誤,也就是所謂的越界

這里用一個例子來說明下越界后數組內部的值的情況:

根據代碼可知,當數組越界后,其數值是不確定的。

總結?

以上就是初階數組的基本內容。如果你讀到了這里,非常感謝你能看完的文章!!!

原文鏈接:https://blog.csdn.net/yahouhou_/article/details/123503952

欄目分類
最近更新