網站首頁 編程語言 正文
接著上次的操作符的詳解,讓我們來簡單了解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
相關推薦
- 2022-03-30 C#數據類型轉換(顯式轉型、隱式轉型、強制轉型)_C#教程
- 2022-12-23 C++?Boost?System超詳細講解_C 語言
- 2022-07-19 Linux應該怎么使用命令
- 2024-01-11 使用@RestController跳轉頁面
- 2022-06-30 python神經網絡tensorflow利用訓練好的模型進行預測_python
- 2022-09-08 Python如何將list中的string轉換為int_python
- 2022-12-21 使用redis如何生成自增序列號碼_Redis
- 2022-05-27 Flutter組件狀態管理的3種方法_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支