網站首頁 編程語言 正文
一、一維數組
1.創建
//如何創建數組
int num[10];
char arr[10];
double sum[10];
float fix[10];
//變長數組
//數組的大小是變量
//C99語法支持
int a = 10;
int arr[a];
2.初始化
int arr[3] = {1,2,3};
//int數組類型
//arr數組名
//[3]數組有3個元素
//{1,2,3}初始化元素為1,2,3
3.使用
#include<stdio.h>
int main()
{
int arr[10] = { 0 };//給每個元素初始化為0
//數組是通過下標訪問的
//下標是從0開始的
int arr[4] = 5;//把下標是4的元素給賦值為5
printf("%d\n", arr[4]);//輸出的是數組中第5個元素的值
return 0;
}
//結果是5
4.數組在內存中的存儲
5.數組大小的計算
int arr[10];
int sz = sizeof(arr)/sizeof(arr[0]);
//sizeof(arr)計算的是數組的總大小
//sizeof(arr[0])計算的是第一個元素大小
//總大小/第一個元素大小=元素個數
二、二維數組
1.創建
//創建一個3行3列的數組
int arr[3][3];
char sum[3][3];
//[]行的部分可以省略,列的不可以
int arr[][3];
char sum[][3];
2.初始化
//創建的同時賦值
//3行3列的二維數組有9個元素
int arr[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int sum[][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
3.使用
二維數組行和列的下標也是從0開始的
#include<stdio.h>
int main()
{
int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
int i = 0;
int j = 0;
//遍歷二維數組
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
//輸出行和列元素組成的坐標
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
輸出結果:
4.二維數組在內存中的存儲
#include<stdio.h>
int main()
{
int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("&arr[%d] [%d] = %p\n", i, j, &arr[i][j]);
}
printf("\n");
}
return 0;
}
輸出結果:
二維數組在內存中也是連續存放的
一行是連續,跨行也是連續?
三、數組作為函數參數
1.關于數組名是數組首元素的地址的兩個例外
(1)sizeof[數組名] - 數組名表示的是整個數組 - 計算的是整個數組的大小 - 單位是字節。
(2)&數組名 - 數組名表示整個數組 - 取出的是整個數組的地址。
2.冒泡排序
(1) 冒泡排序的思想:兩兩相鄰的元素進行比較,并且可能會進行交換
(2)代碼示例
#include<stdio.h>
void bubble_sort(int arr[], int sz)//形參arr本質是指針
{
//確定趟數
int i = 0;
//趟數
for (i = 0; i < sz - 1; i++)
{
//一趟冒泡排序的過程
int j = 0;
//判斷相鄰的兩個數的大小,并交換
//每一趟結束后要排的數字都會減少一個
for (j = 0; j < sz - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
//交換
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
int i = 0;
int arr[] = { 5,4,3,2,1,0 };
//排序為升序-冒泡排序
//計算數組元素個數
int sz = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, sz);//冒泡排序的函數的調用
//數組傳參的時候,
//傳遞的其實是數組首元素的地址
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
輸出結果:
0 1 2 3 4 5?
原文鏈接:https://blog.csdn.net/m0_63033419/article/details/123750238
相關推薦
- 2023-02-09 C++?類模板與成員函數模板示例解析_C 語言
- 2022-05-18 基于python介紹pytorch保存和恢復參數_python
- 2022-12-15 C++?Boost?MPI接口詳細講解_C 語言
- 2022-09-19 Nginx配置Tcp負載均衡的方法_nginx
- 2022-04-15 python機器學習MATLAB最小二乘法的兩種解讀_python
- 2022-05-19 C#?漢字與拼音互轉的實現示例_C#教程
- 2022-09-17 python中pandas常用命令詳解_python
- 2022-04-01 kubelet請求觸發流控,導致節點NotReady
- 最近更新
-
- 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同步修改后的遠程分支