【C語言極簡自學筆記】C 語言數組詳解:一維數組與二維數組

在 C 語言中,數組是一種非常重要的數據結構,它可以將多個相同類型的元素組織在一起,以便于我們進行批量處理和操作。本文將詳細介紹 C 語言中的一維數組和二維數組,包括它們的定義、初始化、元素訪問以及內存存儲等方面的內容。

一、數組基本概念

數組是一組相同類型元素的集合,這些元素在內存中占據連續的存儲空間。數組的元素可以通過下標來訪問,下標從 0 開始。C 語言支持一維數組、二維數組以及多維數組,本文主要討論一維數組和二維數組。

二、一維數組

(一)一維數組的定義

在 C 語言中,定義一維數組的一般形式為:

數據類型 數組名[數組長度];

其中,數據類型可以是 int、float、char 等基本數據類型,也可以是結構體等用戶自定義數據類型;數組名是一個標識符,用于標識這個數組;數組長度必須是一個常量表達式,表示數組中元素的個數。?

例如,定義一個包含 5 個整型元素的數組:

int arr[5];

(二)一維數組的初始化

在定義數組的同時,可以對數組進行初始化,一維數組的初始化方式有以下幾種:

1.完全初始化:給數組的每個元素都賦初值。

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

?2.不完全初始化:只給數組的前幾個元素賦初值,后面未賦值的元素會自動初始化為 0(對于整型數組)或 0.0(對于浮點型數組)。

int arr[5] = {1, 2}; // 等價于{1, 2, 0, 0, 0}

3.省略數組長度初始化:在初始化時不指定數組的長度,編譯器會根據初始化列表中的元素個數自動確定數組的長度。

int arr[] = {1, 2, 3, 4, 5}; // 數組長度為5

(三)一維數組元素的訪問

數組元素可以通過下標來訪問,下標的范圍是 0 到數組長度減 1。例如,對于上面定義的數組 arr,它的元素可以表示為 arr [0]、arr [1]、arr [2]、arr [3]、arr [4]。

我們可以通過賦值語句給數組元素賦值,也可以通過輸入函數從鍵盤讀取值賦給數組元素。例如:

scanf("%d", &arr[1]);

?(四)一維數組的內存存儲

一維數組中的元素在內存中是按照元素的順序連續存儲的,每個元素占據的存儲空間大小由數據類型決定。例如,對于 int 類型的數組,每個元素占據 4 個字節(在 32 位系統中)。數組名代表數組在內存中的首地址,即第一個元素的地址。

三、二維數組

(一)二維數組的定義

二維數組可以看作是一維數組的數組,即每個元素又是一個一維數組。在 C 語言中,定義二維數組的一般形式為:

數據類型 數組名[行長度][列長度];

其中,行長度表示二維數組的行數,列長度表示每行的列數,它們都必須是常量表達式。

例如,定義一個 3 行 4 列的整型二維數組:

int arr[3][4];

?(二)初始化二維數組的初始化

二維數組的初始化方式有以下幾種:

1.按行初始化:將二維數組的每一行元素用花括號括起來,逐行進行初始化。

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

2.按順序初始化:將所有元素按行優先的順序放在一個花括號中進行初始化。

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

3.不完全初始化:只給部分元素賦初值,未賦值的元素會自動初始化為 0。

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

此時,數組第一行前兩個元素為1,2,后兩個元素為0;第二行前三個元素為2,3,4,第四個元素為0;第三行第一個元素為3,其余元素均為0。

4.省略行長度初始化:在初始化時可以省略行長度,但不能省略列長度,編譯器會根據初始化列表中的元素個數和列長度自動確定行長度。

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

(三)訪問二維數組元素

二維數組元素的訪問需要使用兩個下標,第一個下標表示行,第二個下標表示列,下標均從 0 開始。例如,對于上面定義的數組 arr,它的元素可以表示為 arr [i][j],其中 i 的取值范圍是 0 到 2,j 的取值范圍是 0 到 3。

(四)二維數組的內存存儲

二維數組在內存中也是連續存儲的,它按照行優先的順序存儲,即先存儲第一行的所有元素,然后存儲第二行的所有元素,以此類推。例如,對于 3 行 4 列的二維數組 arr,其元素在內存中的存儲順序為 arr [0][0]、arr [0][1]、arr [0][2]、arr [0][3]、arr [1][0]、arr [1][1]、arr [1][2]、arr [1][3]、arr [2][0]、arr [2][1]、arr [2][2]、arr [2][3]。

二維數組名代表數組在內存中的首地址,即第一行第一個元素的地址。arr [i] 表示第 i 行的首地址,arr [i] 就相當于一個一維數組名。

四、數組使用注意事項

1.數組下標不能越界,否則會導致未定義行為,可能會破壞內存中的其他數據,甚至導致程序崩潰。

2.數組名是一個常量指針,不能對其進行賦值操作。例如,arr = arr + 1; 是錯誤的。

3.在傳遞數組參數時,通常需要同時傳遞數組的長度,因為在函數參數中,數組會退化為指針,無法獲取數組的長度。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78426.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78426.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78426.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

04.通過OpenAPI-Swagger規范讓Dify玩轉Agent

dify安裝 cd dify cd docker cp .env.example .env docker compose up -d準備自定義工具 我自建的PowerDNS,它的swagger如下: https://github.com/PowerDNS/pdns/blob/master/docs/http-api/swagger/authoritative-api-swagger.yaml 但需要加上&#x…

汽車產業鏈主表及類別表設計

(提前設計,備用) 一、汽車產業鏈類別表(industry_chain_category) 設計要點 1、核心字段:定義產業鏈分類(如零部件、整車制造、銷售服務等) 2、主鍵約束:自增ID作為唯一標…

?RISC-V架構的低功耗MCU多電壓域優化設計

RISC-V核低功耗MCU的多電壓域設計是一種優化電源管理以降低功耗的技術方案。該設計通過電源域劃分、電壓轉換和時序管理等手段,有效降低了系統功耗并提升能效,適用于物聯網和嵌入式系統等場景。 多電壓域設計的基本原理是將芯片劃分為多個獨立供電區域&…

基于STM32、HAL庫的AD7616BSTZ模數轉換器ADC驅動程序設計

一、簡介: AD7616BSTZ是Analog Devices公司生產的一款16位、雙通道、同步采樣SAR型ADC芯片,主要特點包括: 16位分辨率 雙通道同步采樣 最高采樣率:1MSPS/通道 輸入范圍:10V, 5V或2.5V(軟件可編程) 串行(SPI)和并行接口選項 低功耗:典型值100mW 工作溫度范圍:-40C至+8…

CUDA Stream 回調函數示例代碼

文章目錄 CUDA Stream 回調函數示例代碼基本概念示例代碼代碼解釋回調函數的特點更復雜的示例:多個回調注意事項 CUDA Stream 回調函數中使用 MPI 或 NCCL示例程序注意事項 CUDA Stream 回調函數示例代碼 CUDA 中的流回調函數(stream callback)是一種在 CUDA 流中插…

全棧黑暗物質:可觀測性之外的非確定性調試

一、量子計算的測不準Bug 1. 經典 vs. 量子系統的錯誤模式 量子程序崩潰的觀測影響: 調試方法崩潰復現率觀測干擾度日志打印12%35%斷點調試5%78%無侵入跟蹤27%9%量子態層析成像63%2% 二、量子調試工具箱 1. 非破壞性觀測協議 # 量子程序的無干擾快照 from qiski…

ASP.NET8.0入門與實戰

1、項目初始化 創建一個ASP.NET Core Web API的項目,取消Https和身份驗證。 API項目實際上是一個控制臺程序,這點可以在項目的屬性的輸出類型中看到。 launchSettings.json,在這里可以配置運行項目的名稱,端口號,路…

Synopsys 邏輯綜合的整體架構概覽

目錄 一、DC Shell 邏輯綜合的整體架構概覽 ?? 邏輯綜合的主要階段(Pipeline) 二、核心架構模塊詳解 1. Internal Database(設計對象數據庫) 2. Scheduler(調度器) 3. Rewriting Engine&#xff08…

低壓電工常見知識點

一.工廠用電 1.工廠一般有電源380V和220V。 三相:黃綠紅 藍 雙色 助記符:王力宏 分別對應第一相(R),第二相(S),第三相(T),零線(N),地線(PE) 單相:紅 黑 對應火線(L) 零線(N) 左零右火 二.人體安全電壓是36V 三.變壓器的講解 變壓器的符號…

【沉浸式求職學習day27】

沉浸式求職學習 家人們誰懂啊!明天下午又實習筆試了,所以今天大部分時間還是在搞一些行測之類的東西,所以今天沒什么分享給大家的,明晚會簡單的和大家分享一下關于數據庫的一些東西,以及和大家聊聊我筆試的感覺哈哈哈哈…

進入救援模式(物理服務器)

目錄 **?? 準備工作****?? 進入救援模式(物理服務器)****方法 1:直接修改啟動參數****適用情況****操作步驟****方法 2:通過GRUB引導菜單進入(系統未完全崩潰時)****適用情況****操作步驟****兩者的核心區別****如何選擇?****注意事項****總結**當物理服務器無法正常…

基于Pytest接口自動化的requests模塊項目實戰以及接口關聯方法詳解

🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快 1、基于pytest單元測試框架的規則 1.1 模塊名(即文件名)必須以test_開頭或者_test結尾 1.2 類名必須以Test開頭且不能有init方法 1.3 用…

匯總 JavaScript 內置對象常用方法詳解

匯總 JavaScript 內置對象常用方法詳解 JavaScript 提供了許多強大的內置對象,它們帶有各種實用的方法,能夠幫助我們更高效地編寫代碼。本文將介紹最常用的內置對象方法,并通過實例展示它們的使用場景。 目錄 Array 數組String 字符串Obje…

OceanBase TPCC測試常見報錯匯總

OceanBase TPCC測試常見報錯匯總 報錯1:加載測試數據時創建tablegroup失敗報錯2:加載測試數據時執行超時報錯3:加載測試數據時funcs.sh函數找不到報錯4:加載數據時報錯超過租戶內存上限辦法一:增加租戶內存辦法二:調高轉儲線程數辦法三:調整MemStore內存占比和凍結觸發閾…

Flutter 在 Dart 3.8 開始支持 Null-Aware Elements 語法,自動識別集合里的空元素

近日,在 Dart 3.8 的 changelog 里正式提交了 Null-Aware Elements 語法,該語法糖可以用于在 List、Set、Map 等集合中處理可能為 null 的元素或鍵值對,簡化顯式檢查 null 的場景: /之前 var listWithoutNullAwareElements [if …

SAIL-RK3588協作機器人運動控制器技術方案

一、核心能力與政策適配? ?政策合規性? 滿足工信部《智能機器人重點技術攻關指南》要求,支持 ?EtherCAT主站協議(符合IEC 61158標準)?,助力企業申報工業機器人研發專項補貼(最高300萬元/項目)?核心板…

Eigen幾何變換類 (Transform, Quaternion等)

1. Transform 類&#xff1a;仿射/射影變換 模板參數 cpp Transform<Scalar, Dim, Mode, Options> Scalar&#xff1a;數據類型&#xff08;如 float, double&#xff09;。 Dim&#xff1a;維度&#xff08;2 或 3&#xff09;。 Mode&#xff1a;變換類型&#xf…

openGauss手工配置主備

1、初始化 創建一個操作系統用戶&#xff0c;例如postgres&#xff0c;為這個用戶設置PATH和LD_LIBRARY_PATH環境變量&#xff0c;指向opengauss/bin和opengauss/lib export GAUSSHOME/mnt/disk01/opengauss export PATH$GAUSSHOME/bin:$PATH export LD_LIBRARY_PATH$GAUSS…

CSS預處理器對比:Sass、Less與Stylus如何選擇

引言 CSS預處理器已成為現代前端開發的標準工具&#xff0c;它們通過添加編程特性來增強純CSS的功能&#xff0c;使樣式表更加模塊化、可維護且高效。在眾多預處理器中&#xff0c;Sass、Less和Stylus是三個最流行的選擇&#xff0c;它們各自擁有獨特的語法和功能特點。本文將深…

基于Docker、Kubernetes和Jenkins的百節點部署架構圖及信息流描述

以下是基于Docker、Kubernetes和Jenkins的百節點部署架構圖及信息流描述,使用文本和Mermaid語法表示: 架構圖(Mermaid語法) #mermaid-svg-WWCAqL1oWjvRywVJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-WWCAq…