C語言從頭學28——數組(一)

一、基本概念
? ? ? ?數組是一組相同類型的值被順序地儲存在一起。數組表示方法為變量名加方括號,方括號里是數組的成員數量。例如:
? ? ? ?int arr[20];? //聲明了一個 int 類型的名為 arr 包含20個成員的數組
? ? ? ?數組的成員是從0開始編號的,所以數組的編號永遠小于成員數量,這也是遍歷數組時循環條件用 "<" 而不用 "<=" 的原因。?數組名加方括號和指定編號,就可以像普通變量那樣為其賦值或引用這個成員。例如:
? ? ? ?arr[10]=100;
? ? ? ?int x=2*arr[10];
? ? ? ?注意: 如果引用不存在的數組成員(即越界訪問數組)寫代碼時并不會報錯,有些在編譯時會被發現,有些編譯時也發現不了。使用數組越界是非常值得重視的問題。例如,接上面的例子:
? ? ? ? for(int i=0;i<=20;i++)
? ? ? ? {
? ? ? ? ? ? printf("%d",arr[i]); //當i=20時數組越界,這是很容易犯的錯誤
? ? ? ? }
? ? ? ?數組可以在聲明時(僅在聲明時),使用大括號同時對每一個成員賦值;數組聲明后的賦值也稱為數組的初始化。例如:
? ? ? ?int arr02[5] = {1,2,3,4,5}; //如賦值不足5個,剩余的會賦成0
? ? ? 當我們聲明成員數量大的數組時,為防止訪問時出現莫名其妙的值,可以一次性全部賦值成0(初始化成0),做法如下:
? ? ? ?int arr03[1024]={0};
? ?如果我們在聲明時即全部賦初值,可以省略"[ ]"中的成員數,編譯器會自動補上。
? ? ? ?int arr04[]={6,7,8,9,10,11}; //可以正常編譯
二、數組長度
? ? ? ?sizeof 是一個運算符(也可以理解成是函數),它可以返回數組的字節長度。返回的具體字節長度與數組的類型、成員個數及使用的系統相關。以int arr[20]為例:
? ? ? ?int a = sizeof(arr);? //以數組名為參數,返回整個數組的字節長度
? ? ? ?int b = sizeof(arr[0]);? //以某一成員為參數,返回單個成員的字節長度
? ? ? ?int c = sizeof(arr) / sizeof(arr[0]); //可以計算出數組的成員個數
三、多維數組
? ? ? ?數組名稱后帶有多對中括號的數組稱為多維數組。兩對 "[ ]" 的是二維數組,三對 "[ ]" 的是三數組,依此類推。
? ? ? ?以二維數組為例:
? ? ? ?int arr[3][4]; //聲明了一個3行4列的二維數組
? ? ? 二維數組也可以用{ }賦初值,{ 0 }給所有成員賦初值0。在用{ }賦初值時,為了行列顯示清楚,可以多加幾對大括號。舉例:
? ? ? int arr[3][4]={ ? {1,2,3,4},
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?{4,3,2,1},
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?{5,6,7,8} ?};? //如把內部的三對大括號拿掉也不影響賦值,帶上層次更清楚。
四、附上一個遍歷二維數組并計算數組字節長度的小程序:

#include<stdio.h>
int main(void)
{
//a.聲明數組并賦初值int arr[3][4] = { {1,2,3,4},{4,3,2,1},{5,6,7,8} };
//b.通過兩重循環遍歷二維數組for (int i = 0; i < 3; i++) //一般外層循環行(反過來也無所謂){for (int j = 0; j < 4; j++) //內層循環列{printf("   %d", arr[i][j]); //顯示數組成員的值}printf("\n"); //顯示一行結束時換行}
//c.計算數組字節長度等信息int sum = sizeof(arr);//返回整個數組字節總長度int a = (int)sizeof(arr) / sizeof(arr[0]); //返回數組行數int b = (int)sizeof(arr[0])/sizeof(arr[0][0]); //返回數組行數int c = (int)sizeof(arr) / sizeof(arr[0][0]); //返回數組成員數printf("數組總字節長%d  行%d 列%d 成員總數%d", sum,a,b,c);getchar();return 0;
}

//運行結果:
? ? ?1 ? 2 ? 3 ? 4
? ? ?4 ? 3 ? 2 ? 1
? ? ?5 ? 6 ? 7 ? 8
? ? ?數組總字節長48 ?行3 列4 成員總數12
? ? ?實際上在計算機內部,二維數組的存儲也是線性的沒有行和列之分,一字排開,arr[0][0]是第一個,的后面是arr[0][1],接著arr[0][2],再后邊arr[0][3]、arr[1][0]、arr[1][1]、......、直到arr[2][2]、arr[2][3]。推而廣之,三維、四維也是一樣。

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

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

相關文章

深入理解Symfony框架的環境配置策略

引言 Symfony是一個高度靈活的PHP框架&#xff0c;它允許開發者通過配置文件來定制應用程序的行為&#xff0c;以適應不同的運行環境。環境配置是Symfony中一個重要的概念&#xff0c;它允許開發者為開發、測試和生產環境設置不同的配置參數。本文將詳細探討Symfony的環境配置…

7-491 3名同學5門課程成績,輸出最好成績及所在的行和列(二維數組作為函數的參數)

編程:數組存儲3名同學5門課程成績 輸出最好成績及所在的行和列 要求&#xff1a;將輸入、查找和打印的功能編寫成函數 并將二維數組通過指針參數傳遞的方式由主函數傳遞到子函數中 輸入格式: 每行輸入一個同學的5門課的成績&#xff0c;每個成績之間空一格&#xff0c;見輸入…

互聯網框架五層模型詳解

注&#xff1a;機翻&#xff0c;未校對。 What is the Five Layers Model? The Framework of the Internet Explained 五層模型互聯網框架解釋 Computer Networks are a beautiful, amazing topic. Networks involve so much knowledge from different fields, from physics…

Elasticsearch架構基本原理

Elasticsearch的架構原理可以詳細分為以下幾個方面進行介紹&#xff1a; 一、Elasticsearch基本概念 Elasticsearch&#xff08;簡稱ES&#xff09;是一個基于Lucene構建的開源、分布式、RESTful搜索和分析引擎。它支持全文搜索、結構化搜索、半結構化搜索、數據分析、地理位…

[數據集][目標檢測]城市街道井蓋破損未蓋丟失檢測數據集VOC+YOLO格式4404張5類別

數據集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路徑的txt文件&#xff0c;僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數)&#xff1a;4404 標注數量(xml文件個數)&#xff1a;4404 標注數量(txt文件個數)&#xff1a;4404 標注…

note-網絡是怎樣連接的6 請求到達服務器,響應返回瀏覽器

助記提要 服務器程序的結構套接字的指代方式MAC模塊的接收過程IP模塊的接收過程TCP模塊處理連接包TCP模塊處理數據包TCP模塊的斷開操作URI轉換為實際文件路徑URI調用程序Web服務器訪問控制響應內容的類型 6章 請求到達服務器&#xff0c;響應返回瀏覽器 1 服務器概覽 在數據…

昇思25天學習打卡營第03天 | 張量 Tensor

昇思25天學習打卡營第03天 | 張量 Tensor 文章目錄 昇思25天學習打卡營第03天 | 張量 Tensor張量張量的創建張量的屬性Tensor與NumPy轉換稀疏張量CSRTensorCOOTensor 總結打卡 張量 張量&#xff08;Tensor&#xff09;是一種類似于數組和矩陣的特殊數據結構&#xff0c;是神經…

MATLAB|更改繪圖窗口的大小和位置

MATLAB繪圖 plot、plot3、cdfplot都適用 效果 如下圖&#xff0c;運行程序后可以直接得到這兩個繪圖窗口。 右上角的Figure1是原始圖片&#xff0c;右下角的Figure2是調整了位置和大小后的繪圖窗口。 完整源代碼 % 繪圖大小和位置調整 % Evand©2024 % 2024-7-1/Ver1…

Transformer模型原理細節解析

基本原理: Transformer 的核心概念是 自注意力機制(Self-Attention Mechanism),它允許模型在處理每個輸入時“關注”輸入序列的不同部分。這種機制讓模型能夠理解每個單詞或符號與其他單詞或符號之間的關系,而不是逐個地線性處理輸入。 Transformer 主要由兩個部分組成:…

手把手教你搭建PyTorch環境:MindStudio中PyTorch模型開發實戰

本次實驗的視頻鏈接如下&#xff1a;?https://www.bilibili.com/video/BV1iA4y1f7o1/ 本次實驗在MindStudio上進行&#xff0c;請先按照 教程 配置環境,安裝MindStudio。 ? MindStudio的是一套基于華為自研昇騰AI處理器開發的AI全棧開發工具平臺&#xff0c;該IDE上功能很多…

Boost 智能指針

scoped_ptr 不能被復制或賦值給其他 scoped_ptr 對象,不能與其他指針比較 (除了 nullptr) scoped_ptr 用例 template <typename T> class scoped_ptr {public:// 構造函數:初始化 scoped_ptr 并接管指針的所有權explicit scoped_ptr(T* ptr = nullptr) : ptr_(ptr) …

Flink CDC的使用

MySQL數據準備 create database if not exists test; use test; drop table if exists stu; create table stu (id int primary key auto_increment, name varchar(100), age int); insert into stu(name, age) values("張三",18); insert into stu(name, age) valu…

ESOP 系統助力電子設備公司的管理模式升級

在科技飛速發展的時代&#xff0c;電子設備行業競爭愈發激烈&#xff0c;企業要想在市場中立足并持續發展&#xff0c;不斷升級管理模式成為關鍵。ESOP系統的引入&#xff0c;為電子設備公司帶來了全新的機遇&#xff0c;有力地推動了管理模式的升級。 ESOP 系統首先為電子設備…

element el-table表格切換分頁保留分頁數據+限制多選數量

el-table表格并沒有相關的方法來禁用表頭里面的多選按鈕 那么我們可以另辟蹊徑&#xff0c;來實現相同的多選切換分頁&#xff08;保留分頁數據&#xff09; 限制多選數量的效果 <el-table:data"tableData"style"width: 100%">// 不使用el-talbe自帶…

農村程序員陳隨易2024年中總結

今天是 2024年7月1日&#xff0c;時間如白駒過隙&#xff0c;今年已去其一半。 總結一下今年上半年的情況&#xff0c;給大家提供一些參考和建議。 希望大家關注一下公眾號 陳隨易&#xff0c;有些內容只在公眾號發表。 先看看我的年初計劃&#xff0c;這個在今年年初的時候&…

泛微E9開發 限制明細表列的值重復

限制明細表列的值重復 1、需求說明2、實現方法3、擴展知識點3.1 修改單個字段值&#xff08;不支持附件類型&#xff09;3.1.1 格式3.1.2 參數3.1.3 案例 3.2 獲取明細行所有行標示3.2.1 格式3.2.2 參數說明 1、需求說明 限制明細表的“類型”字段&#xff0c;在同一個流程表單…

【全網首發】雙字重疊語序驗證碼識別

【省流&#xff1a;打算直接測試效果的可以訪問這個網址】 http://decaptcha.ai?project_namenetease_zh_overlap 【實現方案】 如圖所示&#xff0c;我們能看到&#xff0c;比起以往的“單個字”語序點選&#xff0c;這個驗證碼的難點在于“重疊漢字“&#xff0c;我們知道…

【Python機器學習】模型評估與改進——簡單的網格搜索

為了提升模型的泛化性能&#xff0c;我們可以通過調參來實現。 在嘗試調參之前&#xff0c;重要的是理解參數的含義&#xff0c;找到一個模型的重要參數&#xff08;提供最佳泛化性能的參數&#xff09;的取值是一項棘手的任務&#xff0c;但對于幾乎所有模型和數據集來說都是…

API-Window對象

學習目標&#xff1a; 掌握Window對象 學習內容&#xff1a; BOM&#xff08;瀏覽器對象模型&#xff09;定時器-延時函數JS執行機制location對象navigation對象history對象 BOM&#xff08;瀏覽器對象模型&#xff09;&#xff1a; BOM是瀏覽器對象模型。 window對象是一個全…

Windows 11的市場份額越來越大了,推薦你升級!

7月1日&#xff0c;系統之家發布最新數據&#xff0c;顯示Windows 11操作系統的市場份額正在穩步上升。自2021年10月Windows 11發布以來&#xff0c;Windows 10一直占據著市場主導地位&#xff0c;當時其市場份額高達81.44%。然而&#xff0c;隨著時間的推移&#xff0c;Window…