網站首頁 編程語言 正文
二維數組:
引入一個想法: 一個變量:相當于一個點。 一維數組(也就是數組):點匯聚成為一條直線。 二維數組:直線匯聚成一個平面。 三維數組:平面匯聚成立體圖形。
語法:
類型 數組名[常量表達式][常量表達式]
- int a[6][6];//6*6,6行6列
- char b[4][5];//4*5,4行5列
- double c[6][3];//6*3,6行3列
二維數組存放方式:
二維數組的訪問:
- 數組名[下標][下標]
- a[0][0];//訪問a數組中第一行第一列的元素
- b[1][3];//訪問b數組中第二行第四列的元素
- c[3][3];訪問c數組中第四行第四列的元素
- 同樣要注意下標的取值范圍,以防止數組的越界訪問。
- —比如int a[3][4],其“行下標”的取值范圍是0 ~ 2,“列下標”的取值范圍是 0 ~ 3,超出任何一個下標的訪問都是越界訪問。(非常容易中招)
二維數組的初始化:
- 二維數組在內存中是線性存放的,因此可以將所有的數據寫在一個花括號內:
- int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
- 為了更直觀的表示元素的分布,可以用大括號將每一行的元素括起來:
- int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
- 或者
- int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
- 二維數組也可以僅對部分元素賦初值:
- int a[3][4]={{1},{5},{9}};
- 如果希望整個二維數組初始化為0,呢么直接在大括號里寫一個0即可:
- int a[3][4]={0};
- C99同樣增加了一種新特性:指定初始化的元素。這樣就可以只對數組中的某些指定元素進行初始哈賦值,而未被賦值的元素自動初始化為0:
- int a[3][4]={[0][0]=1,[1][1]=2,[2][2]=3};
- 二維數組的初始化也能偷懶,讓編譯器根據元素的數量計算數組的長度。但只有第1維的元素個數可以不寫,其他維度必須加上:
- int a[][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
示例:
例一:二維數組的舒服寫法:
#include<stdio.h> int main() { int a[3][4]={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; int i,j; for(i=0;i<3;i++) { for(j=0;j<4;j++) { printf("%d ",a[i][j]); } printf("\n"); } printf("\n"); return 0; }
例二:對前三行每一行的第一個元素賦初值,其他沒有被賦值的自動補充為0:
#include<stdio.h> int main() { int a[3][4]={{1},{2},{5}}; //把前三行每一行的第一個元素賦初值,其他沒有被賦值的自動補充為0。 //如果賦值的數,多于三個,后面的會報錯,并且自動不算數。 //如果沒有對數組進行賦值,則得出的結果為隨機數。 int i,j; for(i=0;i<3;i++) { for(j=0;j<4;j++) { printf("%d ",a[i][j]); } printf("\n"); } return 0; }
例三:指定數組元素,其他元素自動補充為0:
#include<stdio.h> int main() { int a[3][4]={[2][3]=1,[2][1]=8,[1][2]=5}; int i,j; for(i=0;i<3;i++) { for(j=0;j<4;j++) { printf("%d ",a[i][j]); } printf("\n"); } return 0; }
例四:證明只有第一維可以不寫數值:
#include<stdio.h> int main() { int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};//只有第一維可以不寫 int i,j; for(i=0;i<3;i++) { for(j=0;j<4;j++) { printf("%d ",a[i][j]); } printf("\n"); } return 0; }
總結
原文鏈接:https://blog.csdn.net/HICKER_BOY/article/details/122658153
相關推薦
- 2023-10-17 el-table-column 表單table的后端返回時間戳的轉換
- 2022-12-27 kubernetes?使用jq命令對資源配置查看方式_云其它
- 2022-09-14 Python最好的日期處理庫pendulum的使用指南_python
- 2022-09-18 iOS開發底層探索界面優化示例詳解_IOS
- 2022-07-29 C++深入分析回顧函數重載_C 語言
- 2023-03-21 解讀torch.nn.GRU的輸入及輸出示例_python
- 2022-12-24 TS裝飾器bindThis優雅實現React類組件中this綁定_React
- 2022-12-09 Android入門之ProgressBar的使用教程_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支