C語言數(shù)組的各種操作梳理
一、一維數(shù)組
1.創(chuàng)建
//如何創(chuàng)建數(shù)組 int num[10]; char arr[10]; double sum[10]; float fix[10]; //變長數(shù)組 //數(shù)組的大小是變量 //C99語法支持 int a = 10; int arr[a];
2.初始化
int arr[3] = {1,2,3};
//int數(shù)組類型
//arr數(shù)組名
//[3]數(shù)組有3個元素
//{1,2,3}初始化元素為1,2,3


3.使用
#include<stdio.h>
int main()
{
int arr[10] = { 0 };//給每個元素初始化為0
//數(shù)組是通過下標訪問的
//下標是從0開始的
int arr[4] = 5;//把下標是4的元素給賦值為5
printf("%d\n", arr[4]);//輸出的是數(shù)組中第5個元素的值
return 0;
}
//結(jié)果是54.數(shù)組在內(nèi)存中的存儲

5.數(shù)組大小的計算
int arr[10]; int sz = sizeof(arr)/sizeof(arr[0]); //sizeof(arr)計算的是數(shù)組的總大小 //sizeof(arr[0])計算的是第一個元素大小 //總大小/第一個元素大小=元素個數(shù)
二、二維數(shù)組
1.創(chuàng)建
//創(chuàng)建一個3行3列的數(shù)組 int arr[3][3]; char sum[3][3]; //[]行的部分可以省略,列的不可以 int arr[][3]; char sum[][3];

2.初始化
//創(chuàng)建的同時賦值
//3行3列的二維數(shù)組有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.使用
二維數(shù)組行和列的下標也是從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;
//遍歷二維數(shù)組
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
//輸出行和列元素組成的坐標
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}輸出結(jié)果:

4.二維數(shù)組在內(nèi)存中的存儲
#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;
}輸出結(jié)果:

二維數(shù)組在內(nèi)存中也是連續(xù)存放的
一行是連續(xù),跨行也是連續(xù)
三、數(shù)組作為函數(shù)參數(shù)
1.關(guān)于數(shù)組名是數(shù)組首元素的地址的兩個例外
(1)sizeof[數(shù)組名] - 數(shù)組名表示的是整個數(shù)組 - 計算的是整個數(shù)組的大小 - 單位是字節(jié)。
(2)&數(shù)組名 - 數(shù)組名表示整個數(shù)組 - 取出的是整個數(shù)組的地址。
2.冒泡排序
(1) 冒泡排序的思想:兩兩相鄰的元素進行比較,并且可能會進行交換

(2)代碼示例
#include<stdio.h>
void bubble_sort(int arr[], int sz)//形參arr本質(zhì)是指針
{
//確定趟數(shù)
int i = 0;
//趟數(shù)
for (i = 0; i < sz - 1; i++)
{
//一趟冒泡排序的過程
int j = 0;
//判斷相鄰的兩個數(shù)的大小,并交換
//每一趟結(jié)束后要排的數(shù)字都會減少一個
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 };
//排序為升序-冒泡排序
//計算數(shù)組元素個數(shù)
int sz = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, sz);//冒泡排序的函數(shù)的調(diào)用
//數(shù)組傳參的時候,
//傳遞的其實是數(shù)組首元素的地址
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}輸出結(jié)果:
0 1 2 3 4 5
到此這篇關(guān)于C語言數(shù)組的各種操作梳理的文章就介紹到這了,更多相關(guān)C語言數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
使用Objective-C獲取IPHONE手機IMSI序列號
C語言創(chuàng)建線程thread_create()的方法
C++編程中將引用類型作為函數(shù)參數(shù)的方法指南
C++實現(xiàn)LeetCode(23.合并k個有序鏈表)

