C語言復習筆記--數組

? ? ? ? 今天繼續來淺淺推進一下C語言的復習,這次是數組的復習,話不多說,正文開始.

數組的概念

????????數組是?組相同類型元素的集合,一種自定義類型.數組中元素個數不能為0.數組分為?維數組和多維數組,多維數組?般?較多?的是?維數組.

? ? ? ? 下面從一維數組說起.

一維數組的創建和初始化

??數組創建

?????????維數組創建的基本語法如下:(數組在創建的時候可以指定數組的大小和數組的元素類型).

type arr_name[常量值];

????????1.type 指定的是數組中存放數據的類型,可以是: char、short、int、float 等,也可以自定義的類型

? ? ? ? 2.arr_name 指的是數組名的名字

? ? ? ? 3.[] 中的常量值是?來指定數組的大小的

??數組的初始化

????????數組在創建的時候,我們需要給定?些初始值值,這種就稱為初始化.數組的初始化?般使??括號,將數據放在?括號中.

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>void Print(int arr[], int sz)
{for (int i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");
}
int main()
{//完全初始化int arr1[10] = { 1,2,3,4,5,6,7,8,9,0 };//不完全初始化:其余的會被默認初始化為0int arr2[10] = { 1,2 };//[]中不寫,初始化為幾個就是幾個元素int arr3[] = { 1,2,3,4,5 };Print(arr1, 10);Print(arr2, 10);Print(arr3, sizeof(arr3)/sizeof(arr3[0]));return 0;
}

??數組的類型

????????數組也是有類型的,數組算是?種?定義類型,去掉數組名留下的就是數組的類型.

int arr[10]的類型就是int [10];

char ch[5]的類型是 char [5];

一維數組的使用

? ? ? ? 簡單的了解了一維數組后,讓我們復習一下它的使用.

??數組下標

????????定數組是有下標的,下標是從0開始的,假設數組有n個元素,最后?個元素的下標是n-1.如下圖:

? ? ? ? 我們通常用下標引用符[ ]來訪問數組元素.例如我們訪問下標為7的元素,我們就可以使用arr[7].

??數組元素的打印和輸入

? ? ? ? 在上面初始化中為了看見初始化的結果,我已經將打印的代碼先使用了.因為數組用下標訪問,所以只要便利數組下標就可以打印數組了.

? ? ? ? 數組的輸入與打印類似,大概如下

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>void Print(int arr[], int sz)
{for (int i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");
}int main()
{int arr[10] = { 0 };for (int i = 0; i < 10; i++){scanf("%d", &arr[i]);}Print(arr, 10);return 0;
}

? 一維數組在內存中的存儲

? ? ? ? 想要了解一維數組在內存中的存儲最好的方法就是打印數組中每個元素的地址.代碼和結果如下圖.

? ? ? ? 由上圖輸出結果可知,每兩個元素之間都隔離四個字節,而一int類型就占四個類型.所以我們得出結論:數組在內存中是連續存放的.

??sizeof計算數組元素個數

????????在遍歷數組的時候,我們經常想知道數組的元素個數.在C語言中我們可以用sizeof來實現.

????????sizeof中C語?是?個關鍵字,是可以計算類型或者變量大小的,(他的返回值是所計算類型或變量所占的字節數),其實 sizeof 也可以計算數組的大小.如下

int main()
{int arr[10] = { 0 };printf("%d\n", sizeof(arr));return 0;
}

? ? ? ? 因為數組中所有元素的類型都是相同的,那只要計算出?個元素所占字節的個數,數組的元素個數就能算出來。這?我們選擇第?個元素算大小就可以.然后二者相除就可以得出數組元素個數.

int main()
{int arr[10] = { 0 };int a = sizeof(arr) / sizeof(arr[0]);printf("%d\n", a);return 0;
}

? ? ? ? 有了這個方法,以后在代碼中需要數組元素個數的地?就不用固定寫死了,使用上面的計算,不管數組怎么變化,計算出的大小也就隨著變化了.

二維數組

? 二維數組得概念

????????前?學習的數組被稱為?維數組,數組的元素都是內置類型的,如果我們把?維數組做為數組的元素,這時候就是二維數組?維數組作為數組元素的數組被稱為三維數組二維數組以上的數組統稱為多維數組.

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

? ? ? ? 二維數組的創建:

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

常量值1表示二維數組有幾行

常量值2表示二維數組有幾列

type是元素類型

arr_name是數組名

????????那?維數組如何初始化呢?像?維數組?樣,也是使??括號初始化的.

? ? ? ? 不完全初始化

int main()
{//不完全初始化int arr1[3][5] = { 1,2,3,4,5 };for (int i = 0; i < 3; i++){for (int j = 0; j < 5; j++){printf("%d ", arr1[i][j]);}printf("\n");}printf("\n");//按照?初始化int arr2[3][5] = { {1,2},{3},{4,5} };for (int i = 0; i < 3; i++){for (int j = 0; j < 5; j++){printf("%d ", arr2[i][j]);}printf("\n");}return 0;
}

? ? ? ? 輸出結果

? ? ? ? 完全初始化

int main()
{//完全初始化int arr1[2][5] = { 1,2,3,4,5,6,7,8,9,0};for (int i = 0; i < 2; i++){for (int j = 0; j < 5; j++){printf("%d ", arr1[i][j]);}printf("\n");}return 0;
}

? ? ? ? 輸出結果

????????類似于一維數組,初始化時省略行,但是不能省略列

int main()
{int arr1[][5] = { 1,2,3,4,5,6 };for (int i = 0; i < 2; i++){for (int j = 0; j < 5; j++){printf("%d ", arr1[i][j]);}printf("\n");}return 0;
}

????????輸出結果

? 二維數組的使用

?????????維數組訪問也是使?下標的形式的,?維數組是有?和列的,只要鎖定了?和列就能唯?鎖定 數組中的?個元素.

? ? ? ? 如上圖,最右側綠?的數字表示行號,第??藍?的數字表?列號,都是從0開始的,

????????例如,我們說:第2行,第4列,快速就能定位出7.

? 二維數組的輸入和輸出

? ? ? ? 同樣在上面為了觀察初始化的結果,我已經使用了二維數組的輸出,輸入與輸出類似.代碼見下

int main()
{int arr[3][5] = { 1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7 };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;
}

? 二維數組在內存中的存儲?

????????像?維數組?樣,如果想研究?維數組在內存中的存儲?式,我們也是可以打印出數組所有元素的地址.結果如下

????????從輸出的結果來看,每??內部的每個元素地址之間都相差4個字節,跨?位置處的兩個元素(如:arr[0][4]和arr[1][0])之間也是差4個字節,所以?維數組中的每個元素都是連續存放的.如下圖所示

? ? ? ? 還有一點點為c99中的變長數組,了解即可~以上就是所有復習內容啦,下篇復習見~

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

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

相關文章

Canal 解析與 Spring Boot 整合實戰

一、Canal 簡介 1.1 Canal 是什么&#xff1f; Canal 是阿里巴巴開源的一款基于 MySQL 數據庫增量日志解析&#xff08;Binlog&#xff09;中間件&#xff0c;它模擬 MySQL 的從機&#xff08;Slave&#xff09;行為&#xff0c;監聽 MySQL 主機的二進制日志&#xff08;Binl…

《論語別裁》第01章 學而(31) 詩的人生

不過這句話研究起來有一個問題&#xff0c;是詩的問題。我們知道中國文化&#xff0c;在文學的境界上&#xff0c;有一個演變發展的程序&#xff0c;大體的情形&#xff0c;是所謂漢文、唐詩、宋詞、元曲、明小說&#xff0c;到了清朝&#xff0c;我認為是對聯&#xff0c;尤其…

筆記本運行邊緣計算

筆記本電腦可以用來運行PCDN&#xff08;Peer-to-Peer Content Delivery Network&#xff09;服務。實際上&#xff0c;如果你有閑置的筆記本電腦&#xff0c;并且它具備一定的硬件條件和網絡環境&#xff0c;那么它可以成為一個不錯的PCDN節點。 運行PCDN的基本要求 硬件需求…

暗光增強技術研究進展與產品落地綜合分析(2023-2025)

一、引言 暗光增強技術作為計算機視覺與移動影像領域的核心研究方向之一,近年來在算法創新、硬件適配及產品落地方面取得了顯著進展。本文從技術研究與產業應用兩個維度,系統梳理近三年(2023-2025)該領域的關鍵突破,并對比分析主流手機廠商的影像技術優劣勢。 二、暗光增…

多維array和多維視圖std::mdspan

多維數組 這個特性用于訪問多維數組&#xff0c;之前C operator[] 只支持訪問單個下標&#xff0c;無法訪問多維數組。 因此要訪問多維數組&#xff0c;以前的方式是&#xff1a; 重載operator()&#xff0c;于是能夠以m(1, 2) 來訪問第1 行第2 個元素。但這種方式容易和函數…

Python標準庫之os模塊常用方法

一、os模塊簡介 os模塊是Python標準庫中與操作系統交互的一個重要模塊。它提供了非常豐富的方法來處理文件、目錄以及與操作系統相關的操作&#xff0c;讓我們可以編寫跨平臺的代碼&#xff0c;無論是在Windows、Linux還是macOS系統上都能運行。 二、文件和目錄操作 獲取當前…

利用AI讓數據可視化

1. 從問卷星上下載一份答題結果。 序號用戶ID提交答卷時間所用時間來源來源詳情來自IP總分1、《中華人民共和國電子商務法》正式實施的時間是&#xff08;&#xff09;。2、&#xff08;&#xff09;可以判斷企業在行業中所處的地位。3、&#xff08;&#xff09;是指店鋪內有…

K8S學習之基礎三十五:k8s之Prometheus部署模式

Prometheus 有多種部署模式&#xff0c;適用于不同的場景和需求。以下是幾種常見的部署模式&#xff1a; 1. 單節點部署 這是最簡單的部署模式&#xff0c;適用于小型環境或測試環境。 特點&#xff1a; 單個 Prometheus 實例負責所有的數據采集、存儲和查詢。配置簡單&…

【第14節】windows sdk編程:進程與線程介紹

目錄 一、進程與線程概述 1.1 進程查看 1.2 何為進程 1.3 進程的創建 1.4 進程創建實例 1.5 線程查看 1.6 何為線程 1.7 線程的創建 1.8 線程函數 1.9 線程實例 二、內核對象 2.1 何為內核對象 2.2 內核對象的公共特點 2.3 內核對象句柄 2.4 內核對象的跨進程訪…

Python簡單爬蟲實踐案例

學習目標 能夠知道Web開發流程 能夠掌握FastAPI實現訪問多個指定網頁 知道通過requests模塊爬取圖片 知道通過requests模塊爬取GDP數據 能夠用pyecharts實現餅圖 能夠知道logging日志的使用 一、基于FastAPI之Web站點開發 1、基于FastAPI搭建Web服務器 # 導入FastAPI模…

uniapp工程中解析markdown文件

在uniapp中如何導入markdown文件&#xff0c;同時在頁面中解析成html&#xff0c;請參考以下配置&#xff1a; 1. 安裝以下3個依賴包 npm install marked highlight.js vite-plugin-markdown 2. 創建vite.config.js配置文件 // vite.config.js import { defineConfig } fro…

sass介紹

1、Sass簡介 Sass 是一種 CSS 的預編譯語言。它提供了 變量&#xff08;variables&#xff09;、嵌套&#xff08;nested rules&#xff09;、 混合&#xff08;mixins&#xff09;、 函數&#xff08;functions&#xff09;等功能&#xff0c;并且完全兼容 CSS 語法。Sass 能…

[JavaScript]如何利用作用域塊避免閉包內存泄漏?

出自《你不知道的JavaScript》上卷 以下是本書給出的反例: function process (data) {...} var bigdata{...} process(bigdata); var btn document.getElementById(x); btn.addEventListener(click, function click{...});click會被回調在其他位置, 在addEventListener函數內…

leetcode hot100(五)

11. 盛最多水的容器 給定一個長度為 n 的整數數組 height 。有 n 條垂線&#xff0c;第 i 條線的兩個端點是 (i, 0) 和 (i, height[i]) 。 找出其中的兩條線&#xff0c;使得它們與 x 軸共同構成的容器可以容納最多的水。 返回容器可以儲存的最大水量。 說明&#xff1a;你…

Unity 云渲染本地部署方案

Unity Render Streaming 云渲染環境搭建 0.安裝 Unity Render Streaming 實現原理: 服務器與客戶端實現功能包括: 詳細內容見官方文檔&#xff1a; 官方文檔: https://docs.unity3d.com/Packages/com.unity.renderstreaming3.1/manual/tutorial.html Unity 流送云渲染介紹: …

洛谷 P3986 斐波那契數列

P3986 斐波那契數列 題目描述 定義一個數列&#xff1a; f ( 0 ) a , f ( 1 ) b , f ( n ) f ( n ? 1 ) f ( n ? 2 ) f(0) a, f(1) b, f(n) f(n - 1) f(n - 2) f(0)a,f(1)b,f(n)f(n?1)f(n?2) 其中 a, b 均為正整數&#xff0c;n ≥ 2。 問有多少種 (a, b)&…

【java面型對象進階】------繼承實例

繼承結構下的標準Javabean 代碼如下&#xff1a; package demo10;//定義員工父類 public class Employee {private String id;private String name;private double salary;//構造方法public Employee(){}public Employee(String id,String name,double salary){this.idid;thi…

Vitis 2024.1 無法正常編譯custom ip的bug(因為Makefile里的wildcard)

現象&#xff1a;如果在vivado中&#xff0c;添加了自己的custom IP&#xff0c;比如AXI4 IP&#xff0c;那么在Vitis&#xff08;2024.1&#xff09;編譯導出的原本的.xsa的時候&#xff0c;會構建build失敗。報錯代碼是&#xff1a; "Compiling blank_test_ip..."…

【圖論】并查集的學習和使用

目錄 并查集是什么&#xff1f; 舉個例子 組成 父親數組&#xff1a; find函數&#xff1a; union函數&#xff1a; 代碼實現&#xff1a; fa[] 初始化code: find code&#xff1a; 遞歸實現: 非遞歸實現: union code : 畫圖模擬&#xff1a; 路徑壓縮&#xff1a…

Java使用FFmpegFrameGrabber進行視頻拆幀,結合Thumbnails壓縮圖片保存到文件夾

引入依賴 <dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.17</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ja…