【C語言】4.C語言數組(2)

文章目錄

  • 6. 二維數組的創建
    • 6.1 ?維數組的概念
    • 6.2 ?維數組的創建
  • 7. 二維數組的初始化
    • 7.1 不完全初始化
    • 7.2 完全初始化
    • 7.3 按照?初始化
    • 7.4 初始化時省略?,但是不能省略列
  • 8. 二維數組的使用
    • 8.1 ?維數組的下標
    • 8.2 ?維數組的輸?和輸出
  • 9. 二維數組在內存中的存儲
  • 10. C99中的變長數組
  • 11. 數組練習


6. 二維數組的創建

6.1 ?維數組的概念

如果我們把一維數組做為數組的元素,這時候就是二維數組。二維數組以上的數組統稱為多維數組。

在這里插入圖片描述

也就是說可以理解成二維數組就是由多行一維數組組成的。


6.2 ?維數組的創建

二維數組語法:

type arr_name[常量值1][常量值2];

舉個例子:

int arr[3][5];

3表示數組有3行

5表示每一行有5個元素,也可以理解成5列

int 表示數組的每個元素是整型類型

arr 是數組名,可以根據自己的需要指定名字


7. 二維數組的初始化

7.1 不完全初始化

int arr1[3][5] = {1,2};
int arr2[3][5] = {0};
在這里插入圖片描述在這里插入圖片描述

7.2 完全初始化

int arr3[3][5] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

7.3 按照?初始化

在這里插入圖片描述

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

7.4 初始化時省略?,但是不能省略列

在這里插入圖片描述

int arr5[][5] = {1,2,3};
int arr6[][5] = {1,2,3,4,5,6,7};
int arr7[][5] = {{1,2}, {3,4}, {5,6}};

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述


8. 二維數組的使用

8.1 ?維數組的下標

二維數組是有行和列的,只要鎖定了行和列就能唯一鎖定數組中的元素.

在這里插入圖片描述

第一行藍色的數字表示列號,第一列藍色數字表示行號。

都是從0開始的。

arr[0][0]=1

arr[1][2]=8


8.2 ?維數組的輸?和輸出

如何訪問整個二維數組?

#include <stdio.h>
int main()
{int arr[3][5] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };int i = 0;for (i = 0; i < 3; i++) //產生行號{int j = 0;for (j = 0; j < 5; j++) //產生列號{printf("%d ", arr[i][j]);}printf("\n");}return 0;
}

打印:

在這里插入圖片描述

如果想改變整個數組的元素,并且打印的話就這樣:

#include <stdio.h>
int main()
{int arr[3][5] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};int i = 0;for(i=0; i<3; i++) //產生行號{int j = 0;for(j=0; j<5; j++) //產生列號{scanf("%d", &arr[i][j]); }}for(i=0; i<3; i++) //產生行號{int j = 0;for(j=0; j<5; j++) //產生列號{printf("%d ", arr[i][j]); }printf("\n");}return 0;
}

打印:

在這里插入圖片描述


9. 二維數組在內存中的存儲

我們先打印出數組所有元素的地址:

#include <stdio.h>
int main()
{int arr[3][5] = { 0 };int i = 0;int j = 0;for (i = 0; i < 3; i++){for (j = 0; j < 5; j++){printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]);}}return 0;
}

打印:

在這里插入圖片描述

從輸出的結果來看,每一行內部的每個元素都是相鄰的,地址之間相差4個字節。

一些特殊的地方,比如說:arr[0][4]arr[1][0]之間也是差4個字節。

所以二維數組中的每個元素都是連續存放的。

在這里插入圖片描述


10. C99中的變長數組

在C99標準之前,C語言在創建數組的時候,數組大小的指定只能使用常量、常量表達式,或者如果我們初始化數據的話,可以省略數組大小。

int arr1[10];
int arr2[3+5];
int arr3[] = {1,2,3};

這樣的語法限制,讓我們創建數組就不夠靈活,有時候數組大了浪費空間,有時候數組又小了不夠用。

于是,C99標準中給一個變長數組的新特性,允許我們可以使用變量指定數組大小。

int n = a+b;
int arr[n];

這個例子里面,數組 arr 就是變長數組,因為它的長度取決于變量 n 的值,編譯器沒法事先確定,只有運行時才能知道 n 是多少。

變長數組的數組長度只有運行時才能確定,所以變長數組不能初始化。

注意:有些編譯器不支持C99語法,所以使用變長數組有時會報錯。


11. 數組練習

編寫代碼,演示多個字符從兩端移動,向中間匯聚:

#include <stdio.h>
int main()
{char arr1[] = "welcome to bit...";char arr2[] = "#################";int left = 0;int right = strlen(arr1)-1;//得到數組元素個數減一,用作數組最右邊一個元素printf("%s\n", arr2);while(left<=right){Sleep(1000);//延時1秒,這個函數只有Windows電腦可以用//這個延時函數可以讓下面的打印慢慢出來,比較好玩arr2[left] = arr1[left];arr2[right] = arr1[right];//將arr1中的字符賦值給arr2中的對應位置。這樣arr2中的井號被arr1中的字符替換。left++;right--;//left++;和right--;分別將left和right向中間移動,left 向右移動,right向左移動。printf("%s\n", arr2);}return 0;
}

打印:

在這里插入圖片描述

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

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

相關文章

利用一段代碼輕松繞過PHP授權系統

利用一段代碼輕松繞過PHP授權系統 第一步&#xff1a;首先你需要改名全局文件 比如說全局文件 common.php&#xff0c;那么 你將他改為core.php 第二步&#xff1a;創建文件 創建一個文件&#xff0c;和改名前的全局文件名稱一樣&#xff0c;然后把以下代碼復制進去就OK了 …

行列視在做報表之前需要準備哪些前期工作

行列視是一款功能強大的生產數據分析和報表生成工具&#xff0c;使用它進行報表制作之前&#xff0c;確實需要一些前期準備工作&#xff0c;以確保報表的準確性和有效性。以下是進行行列視報表制作前需要準備的一些關鍵步驟&#xff1a; 1.明確報表需求&#xff1a; - 確定報表…

【MySQL01】【 Explain 命令詳解】

文章目錄 一、前言二、Explain 概覽三、Explain 詳解1. id2. select_type3. table4. type5. possible_keys6. key7. key_len8. ref9. rows10. filtered11. extra 列 四、補充1. EXPLAIN 擴展1.1 Extend EXPLAIN1.2 JSON 格式的執行計劃 2. Intersection、Union、Sort-Union 索引…

使用C++實時讀取串口數據(window使用已編譯LibModbus庫并用QT實現一個實時讀取串口數據)

先看這篇文章&#xff0c;寫得很詳細: QT應用篇 四、window編譯LibModbus庫并用QT編寫一個Modbus主機 手把手教學 編譯好的LibModbus庫可以在上面文章里下載&#xff0c;也可以在我的鏈接里下載&#xff1a; 為了在Qt Creator中創建新項目并嵌入上述C代碼&#xff0c;請執行以…

Linux監控apache腳本

監控apache腳本&#xff1a; 1、每十分鐘檢查apache是否正常運行 分析&#xff1a;進程在運行如何判斷 1&#xff09;lockfile是否存在 2&#xff09;pid是在后臺存在 3&#xff09;能否正常訪問頁面 2、如果apache運行不正常&#xff08;進程死亡、頁面訪問也不正常等情況&am…

C++進階:紅黑樹介紹及模擬實現(圖示詳解過程)

C進階&#xff1a;紅黑樹介紹及模擬實現 上次介紹了AVL樹&#xff1a;C進階&#xff1a;AVL樹詳解及模擬實現&#xff08;圖示講解旋轉過程&#xff09; 今天就來緊接著來紅黑樹啦!!! 文章目錄 1.紅黑樹介紹約束規則 2.項目文件規劃3.整體框架&#xff08;節點和Tree&#xf…

whisper報錯:hp, ht, pid, tid = _winapi.CreateProcess [WinError 2] 系統找不到指定的文件。

in _execute_child hp&#xff0c; ht&#xff0c; pid&#xff0c; tid _winapi.CreateProcess&#xff08;executable&#xff0c; args&#xff0c; FileNotFoundError&#xff1a; [WinError 2] 系統找不到指定的文件。 原因&#xff1a; 沒裝ffmpeg 或者 ffmpeg沒添加到…

k8s pod就緒探針

Pod 可能需要時間來加載配置或數據&#xff0c;或者可能需要執行預熱過程以防止第一個用戶請求時間太長影響了用戶體驗。在這種情況下&#xff0c;不希望該 pod 立即開始接收請求&#xff0c;尤其是在運行的實例可以正確快速地處理請求的情況下。不要將請求轉發到正在啟動的 po…

YOLOv5獨家改進:backbone改進 | 微軟新作StarNet:超強輕量級Backbone | CVPR 2024

??????創新點:star operation(元素乘法)在無需加寬網絡下,將輸入映射到高維非線性特征空間的能力,這就是StarNet的核心創新,在緊湊的網絡結構和較低的能耗下展示了令人印象深刻的性能和低延遲 ??????如何跟YOLOv5結合:替代YOLOv5的backbone 收錄 YOL…

電容筆記匯總

電容 一、電容理論基礎 1、電容的本質 兩個相互靠近的導體&#xff0c;中間夾一層不導電的絕緣介質&#xff0c;這就構成了電容器。當電容器的兩個極板之間加上電壓時&#xff0c;電容器就會儲存電荷。 兩個相互靠近的金屬板中間夾一層絕緣介質組成的器件&#xff0c;當兩端…

豆漿機缺水檢測功能如何實現的

豆漿機缺水檢測功能的實現是通過光學液位傳感器來完成的。這種傳感器具有多種優勢&#xff0c;如內部所有元器件經過樹脂膠封處理&#xff0c;沒有任何機械活動部件&#xff0c;免調試、免檢驗、免維護等特點。它采用了光電液位傳感器內置的光學電子元件&#xff0c;體積小、功…

Docker常用鏡像安裝

1. mysql 1.1 安裝 獲取鏡像 docker pull mysql:8.0.30創建文件掛載目錄 創建容器并運行 docker run -p 3306:3306 --name mysql8 \ -v /home/docker/mysql8/log:/var/log/mysql \ -v /home/docker/mysql8/data:/var/lib/mysql \ -v /home/docker/mysql8/mysql-files:/va…

保研機試之【設備驅動程序】

B選項&#xff1a; 綜上&#xff0c;我認為這道題選擇D~

一些近來對內網攻防的思考

我知道我最近托更托了很久了&#xff0c;其實也不是小編懶啊 這小編也是一直在寫&#xff0c;但是遇到的問題比較多&#xff08;我太菜了&#xff09;&#xff0c;所以一直拖著。 但是總不能不更吧 那就講一下進來的一些內網攻防的思考吧 1.CrossC2上線Linux到CS(成功) …

用友網絡的危與機:2023年虧損約10億元,王文京面臨嚴肅拷問

“企業在新的產業浪潮來臨時&#xff0c;應該主動推進新階段的產品和業務創新&#xff0c;這樣才能夠在新的浪潮成為主流的時候&#xff0c;走到行業前面&#xff0c;否則就會從產業發展的潮流中掉下來”。用友網絡創始人王文京&#xff0c;曾用“沖浪理論”形容一家企業成功的…

Steam喜加一,限時免費領取《Machinika Museum》

《Machinika Museum》限時免費領取啦&#xff01;這是一款燒腦解謎游戲&#xff0c;讓你挖掘神秘外星裝置的秘密。在這個非常特別的異星裝置博物館里&#xff0c;你將扮演一名研究員&#xff0c;負責解開各種機械謎題&#xff0c;探索背后的故事。 在這個未來世界&#xff0c;外…

MLP的代替:KAN

受柯爾莫哥洛夫-阿諾德表示定理的啟發&#xff0c;作者提出柯爾莫哥洛夫-阿諾德網絡&#xff08;KAN&#xff09;作為多層感知器&#xff08;MLP&#xff09;有前途的替代品。MLP 在節點&#xff08;“神經元”&#xff09;上具有固定的激活函數&#xff0c;而 KAN 在邊&#x…

自動化中遇到的問題歸納總結

1、動態元素定位不到 解決方法&#xff1a;盡量使用固定元素定位&#xff0c;如沒有固定元素&#xff0c;則采用絕對路徑進行定位&#xff0c;因為元素路徑是唯一且不變的 2、自動化腳本執行速度較慢 盡量使用css方法定位元素&#xff0c;使用等待時&#xff0c;少用sleep方…

C#中string.format的格式和用法

C#中string.format的格式和用法 第1部分 格式化數字 string str1 string.Format("{0:N1}",56789); //result: 56,789.0string str2 string.Format("{0:N2}",56789); //result: 56,789.00string str3 string.Format("{0:…

Kubernetes 文檔 / 概念 / 容器 / 容器環境

Kubernetes 文檔 / 概念 / 容器 / 容器環境 此文檔從 Kubernetes 官網摘錄 中文地址 英文地址 容器環境 Kubernetes 的容器環境給容器提供了幾個重要的資源&#xff1a; 文件系統&#xff0c;其中包含一個鏡像 和一個或多個的卷容器自身的信息集群中其他對象的信息 容器信…