【時時三省】(C語言基礎)怎樣定義和引用一維數組

山不在高,有仙則名。水不在深,有龍則靈。 ----CSDN 時時三省

一維數組是數組中最簡單的,它的元素只需要用數組名加一個下標,就能唯一地確定。如上面介紹的學生成績數組s就是一維數組。有的數組,其元素要指定兩個下標才能唯一地確定,如用s?,?表示“第2班第3名學生的成績”,其中第1個下標代表班,第2個下標代表在本班中的學生序號。此時,s就是二維數組。還可以有三維甚至多維數組,如用s?,?,?表示“4年級2班第3名學生的成績”,此時,s就是三維數組。它們的概念和用法基本上是相同的。熟練掌握一維數組后,對二維或多維數組,很容易舉一反二,迎刃而解。

怎樣定義一維數組

要使用數組,必須在程序中先定義數組,即通知計算機:由哪些數據組成數組,數組中有多少元素,屬于哪個數據類型。否則計算機不會自動地把一批數據作為數組處理。例如,下面是對數組的定義:

int a [ 10?];

它表示定義了一個整型數組,數組名為a,此數組包含10個整型元素。

定義一維數組的一般形式為

類型說明符 數組名[常量表達式];

說明:

( 1 )數組名的命名規則和變量名相同,遵循標識符命名規則。( 2 )在定義數組時,需要指定數組中元素的個數,方括號中的常量表達式用來表示元意的個數,即數組長度。例如,指定a [ 10 ],表示a數組有10個元素。注意,下標是從0開始的,這10個元素是a [ 0 ],a [ 1 ] ,a [ 2 ] , a [ 3 ] , a [ 4 ] , a [ 5 ] , a [ 6 ] , a [ 7 ] , a [ 8 ],a [ 9 ]。請特別注意,按上面的定義,不存在數組元素a [ 10 ]。

( 3 )常量表達式中可以包括常量和符號常量,如“int a [ 3 + 5 ];”是合法的。不能包含變量,如“inta「n ];”是不合法的。也就是說,C語言不允許對數組的大小作動態定義,即數組的大小不依賴于程序運行過程中變量的值。例如,下面這樣定義數組是不行的:

int n ;

scanf ( " % d”,& n );/ /企圖在程序中臨時輸入數組的大小

int a [ n ];

用“int a [ 10 ];”定義了數組a后,在內存中劃出一片存儲空間,存放了一個有10個整型元素的數組(如果用VisualC++,此空間大小為4×10 = 40字節)。可以看到,用一個

“int a [ 10 ];”,

就相當于定義了10個簡單的整型變量,顯然簡捷方便。

怎樣引用一維數組元素

在定義數組并對其中各元素賦值后,就可以引用數組中的元素。應注意:只能引用數下組元素而不能一次整體調用整個數組全部元素的值。

引用數組元素的表示形式為

數組名[下標]

例如,a [ 0 ]就是數組a中序號為0的元素,它和一個簡單變量的地位和作用相似。“下標”可以是整型常量或整型表達式。例如下面的賦值表達式包含了對數組元素的引用:

a [ 0 ] = a [ 5 ] + a [ 7 ] - a [ 2×3 ]

每一個數組元素都代表一個整數值。

注意:

定義數組時用到的“數組名[常量表達式]”和引用數組元素時用的“數組名[下標]”形式相同,但含義不同。例如:

int a [ 10 ];/ /前面有int,這是定義數組,指定數組包含10個元素

t = a [ 6 ] ; / /這里的a [ 6 ]表示引用a數組中序號為6的元素

例題:

對10個數組元素依次賦值為0,1,2,3,4,5,6,7,8,9,要求按逆序輸出。

解題思路:

顯然首先要定義一個長度為10的數組,由于賦給的值是整數,因此,數組可定義為整型,要賦的值是0 ~ 9,有一定規律,可以用循環來賦值,同樣,用循環來輸出這10個值,在輸出時,先輸出最后的元素,按下標從大到小輸出這10個元素,這個算法很簡單,可以直接寫出程序。

編寫程序:

運行結果:

程序分析:

第1個for循環使a[0]?~ a [9]的值為0 ~ 9,第2個for循環按a [9] ~ a [0]的順序輸出各元素的值。

應當特別提醒的是:數組元素的下標從0開始,如果用“int a [ 10 ];”定義數組,則最大下標值為9,不存在數組元素a[10]。

一維數組的初始化

為了使程序簡潔,常在定義數組的同時給各數組元素賦值,這稱為數組的初始化。可以用“初始化列表”方法實現數組的初始化。在定義數組時對全部數組元素賦予初值。例如:

int a [ 10 ] = ( 0,1,2,3,4,5,6,7,8,9 );

將數組中各元素的初值順序放在一對花括號內,數據間用逗號分隔。花括號內的數據就稱為“初始化列表”。

經過上面的定義和初始化之后,a [ 0 ] = 0,a [ 1 ] = 1,a [ 2 ] = 2,a [ 3 ] = 3,a [ 4 ] = 4,a[ 5 ] = 5,a [ 6 ] = 6,a [ 7 ] = 7,a [ 8 ] = 8,a [ 9 ] = 9。

( 2 )可以只給數組中的一部分元素賦值。例如:int a [ 10 ] = ( 0,1,2,3,4 );定義a數組有10個元素,但花括號內只提供5個初值,這表示只給前面5個元素賦初值,系統自動給后5個元素賦初值為0。

( 3 )如果想使一個數組中全部元素值為0,可以寫成int a [ 10 ] = ( 0,0,0,0,0,0,0,0,0,0 );或int a [ 10 ] = ( 0 );

( 4 )在對全部數組元素賦初值時,由于數據的個數已經確定,因此可以不指定數組長度。例如:

int a [ 5 ] = ( 1,2 , 3 , 4,5 );

可以寫成

int a []= ( 1,2,3,4,5 );

在第2種寫法中,花括號中有5個數,雖然沒有在方括號中指定數組的長度,但是系統會根據花括號中數據的個數確定a數組有5個元素。但是,如果數組長度與提供初值的個數不相同,則方括號中的數組長度不能省略。例如,想定義數組長度為10,就不能省略數組長度的定義,而必須寫成

int a [ 10 ] = ( 1,2,3,4,5 );

只初始化前5個元素,后5個元素為0。

說明:

如果在定義數值型數組時,指定了數組的長度并對之初始化,凡未被“初始化列表”指定初始化的數組元素,系統會自動把它們初始化為0(如果是字符型數組,則初始化為' \0 ',如果是指針型數組,則初始化為NULL,即空指針)。

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

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

相關文章

編譯faiss

編譯faiss-1.10.0 首先確保自己cmake的版本: cmake --version 確保其版本至少為CMake 3.24.0 or higher is required。 其次安裝OpenBLAS: https://github.com/OpenMathLib/OpenBLAS 去這里去安轉Openblas內容,然后確保自己的CPU的指令集是存…

Linux 入門:操作系統進程詳解

目錄 一.馮諾依曼體系結構 一). 軟件運行前為什么要先加載?程序運行之前在哪里? 二).理解數據流動 二.操作系統OS(Operator System) 一).概念 二).設計OS的目的 三).如何理解操作系統…

word交叉引用圖片、表格——只引用編號的處理方法

交叉引用圖片/表格 在“引用”選項卡上的“題注”組中,單擊“插入題注”。勾選【從題注中排除標簽】。在文中插入題注。 【注 意】 這時候插入的題注只有編號項了。然后手動打上標簽【TABLE】,并在標簽和編號項之間加上【樣式分隔符,AltCt…

rails 8 CSS不起效問題解決

很久沒用rails了,最近打算重新復習一下。在配置好環境后,創建了項目,通過腳手架創建了數據庫表,和相關的文件。但我發現卻沒有生成相應的CSS文件,可能是rails8 取消了吧。于是自己手動創建了相應的css文件。但是刷新頁…

【nlohmann\json.hpp】‘_snprintf‘: is not a member of ‘std‘

這個問題時有發生但是為啥現在更新了vs2022 后,發生了這些報錯:2>(compiling source file ../worker/src/fargo/PacedVideoSenderGo.cpp) 2>D:\XTRANS\thunderbolt\ayame

數據結構--【二叉樹】

目錄 定義結構體: 初始化: 手動創建一個二叉樹: 前序遍歷: 中序遍歷: 后序遍歷 二叉樹節點個數: 葉子節點個數: 二叉樹第k層節點個數: 二叉樹的高度: 查找值為x…

深入解析Linux進程間通信(IPC):機制、應用與最佳實踐

引言 在多任務操作系統中,進程間通信(Inter-Process Communication, IPC)是協同工作的核心機制。Linux作為現代操作系統的典范,提供了8種主要IPC方式,從傳統的管道到面向網絡的套接字,每種方法都暗藏獨特的…

2025年“深圳杯”數學建模挑戰賽B題-LED顯示屏顏色轉換設計與校正

LED顯示屏顏色轉換設計與校正 小驢數模 問題的背景 走在晚風都市,或春日田野,我們都會看到一個色彩斑斕的世界。色彩是我們對世界一種重要感知。什么是色彩,或顏色?顏色是光作用于人眼引起的視覺感知現象,它與物體的…

Java學習手冊:Spring MVC 架構與實現

一、Spring MVC 概述 Spring MVC 是 Spring 框架的一個模塊,它提供了一套 Web 應用開發的解決方案,實現了 MVC(Model-View-Controller)設計模式。Spring MVC 提供了清晰的分離邏輯層、視圖層和控制器層的結構,便于開發…

【TF-BERT】基于張量的融合BERT多模態情感分析

不足:1. 傳統跨模態transformer只能處理2種模態,所以現有方法需要分階段融合3模態,引發信息丟失。2. 直接拼接多模態特征到BERT中,缺乏動態互補機制,無法有效整合非文本模態信息 改進方法:1. 基于張量的跨模…

maven坐標導入jar包時剔除不需要的內容

maven坐標導入jar包時剔除不需要的內容 問題描述解決方案 問題描述 maven坐標導入jar包時剔除不需要的內容 解決方案 Spring Boot 默認使用 Logback&#xff0c;需在 pom.xml 中排除其依賴&#xff1a; <dependency><groupId>org.springframework.boot</gro…

C與指針——輸入輸出

錯誤定位 當一個庫函數出錯時&#xff0c;errno會被重置 perror(const char* s);\\輸出s: errno 對應的錯誤信息 \\如果單獨想要錯誤信息可以 char* e strerror(errno);\\系統錯誤碼轉換為對應的錯誤信息字符串輸出緩沖區 一般輸出緩沖區滿的時候才刷新&#xff0c;也就是…

JSON Web Token 默認密鑰 身份驗證安全性分析 dubbo-admin JWT硬編碼身份驗證繞過

引言 在web開發中&#xff0c;對于用戶認證的問題&#xff0c;有很多的解決方案。其中傳統的認證方式&#xff1a;基于session的用戶身份驗證便是可采用的一種。 基于session的用戶身份驗證驗證過程&#xff1a; 用戶在用進行驗證之后&#xff0c;服務器保存用戶信息返回sess…

STM32GPIO輸出實戰-LED模板

STM32GPIO輸出實戰-LED模板 一&#xff0c;LED控制原理1&#xff0c;LED控制時GPIO的配置2&#xff0c;LED連接方式3&#xff0c;使用HAL庫控制LED的常用函數&#xff1a; 二&#xff0c;任意控制LED模板1&#xff0c;Led底層2&#xff0c;代碼詳細解析 三&#xff0c;實用技巧…

第二十七屆華東杯數學建模A 題 跳臺滑雪問題 完整思路模型及代碼

題目背景 跳臺滑雪起源于 19 世紀&#xff0c;是冬季運動會的傳統競技項目。今年亞洲冬季運動會在我國 哈爾濱舉行&#xff0c;跳臺滑雪項目吸引了包括中國在內的亞洲各國運動健兒踴躍參加&#xff0c;我國運動員取得了優異的成績。 跳臺滑雪融合了速度、力量與精確控制&…

Python之學習筆記(六)

文章目錄 1. 字典&#xff08;Dictionary&#xff09;2. 集合&#xff08;Set&#xff09;3. 字典 vs 集合4. 應用場景5. 注意事項 Python中的字典&#xff08; dict&#xff09;和集合&#xff08; set&#xff09;是兩種高效且常用的數據結構&#xff0c;適用于不同的場景。…

緩存與數據庫的高效讀寫流程解析

目錄 前言1 讀取數據的流程1.1 檢查緩存是否命中1.2 從數據庫讀取數據1.3 更新緩存1.4 返回數據 2 寫入數據的流程2.1 更新數據庫2.2 更新或刪除緩存2.3 緩存失效 3 緩存與數據庫的一致性問題3.1 寫穿&#xff08;Write-through&#xff09;策略3.2 寫回&#xff08;Write-back…

PowerShell 備份 Windows10/11 還原計算機驅動程序SOP

一、現在計算機C目錄下創建一個新的文件夾名稱為 driverbackup 二、打開cmd 以管理員身份執行 dism /online /export-driver /destination: C:\driverbackup 在正常情況下&#xff0c;Windows 10會自動檢測您的設備所需的驅動程序&#xff0c;并將其安裝到您的PC上。 但是&am…

自監督學習(Self-supervised Learning)李宏毅

目錄 Self-supervised Learning簡介&#xff1a; BERT : How to use BERT case1&#xff1a;sequence to class 語言積極性OR消極性判斷 case2&#xff1a;sequence to sequence句子中的詞語詞性標注 case3&#xff1a;sequence2 to class兩個句子是不是一個為前提一個為…

Python基于Django的全國二手房可視化分析系統【附源碼】

博主介紹&#xff1a;?Java老徐、7年大廠程序員經歷。全網粉絲12w、csdn博客專家、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精彩專欄推薦訂閱&#x1f447;&…