目录:
1.一维数组的创建和初始化
(1)一维数组的创建
数组: 是一组相同类型元素的集合
int arr[10];
#define N 10
int main()
{
int arr1[N];
return 0;
}
注: 创建数组,[ ]中要给一个常量,不能给变量也不能为空
(2)数组的初始化
数组的初始化:是指在创建数组的同时给数组的内容一些合理的初始值(初始化)
int arr[5]; //随机值
int arr1[5] = { 1, 2 }; //后面三个默认是0
int arr2[5] = { 1, 2,3,4,5};
int arr3[] = { 1, 2, 3, 4, 5 }; //初始给几个,默认就会给初始化多大
字符数组的特殊初始化方式
char str[6] = { 'a', 'b', 'c' };
char str[6] = { "abc" };
char str[] = { "abcd" };
例:
#include<stdio.h>
int main()
{
int arr[] = { 1, 2, 3, 4, 5 };
char str[6] = { "abc" };
int arr1[10] = { 0 };
for (int i = 0; i < 5; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
for (int i = 0; i < 6; i++)
{
printf("%c ", str[i]);
}
printf("\n");
for (int i = 0; i < 10; i++)
{
printf("%d ", arr1[i]);
}
printf("\n");
return 0;
}
注: 数组的下标是从0开始的
2.一位数组在内存中的存储
注: 数组在内存中是连续存放的
3.二维数组的创建和初始化
(1)二维数组的创建
二维数组中第一个[ ]中是行,第二个[ ]中是列
int arr[3][4];
char arr[3][4];
double arr[3][4];
注: • 行和列的[ ]中都只能用常量
• 行可以省略,列不能省略
(2)二维数组的初始化
#include<stdio.h>
int main()
{
int arr[3][4] = { { 1, 2 }, { 3, 4 } };
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
#include<stdio.h>
int main()
{
int arr[3][4] = {1,2,3,4};
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
注: • 只初始化一部分其余默认给0
• 一个{ }代表一行
3.数组作为函数的参数
C语言不允许传数组,传过去的是首元素的地址
C语言极度追求效率,函数参数写成int a[10] / int a[]
等形式时,a还是指针(代表首元素的地址),不是数组
void BubbleSort(int* a)
void BubbleSort(int a[6])
void BubbleSort(int a[])
这三个是数组的首元素的地址
(1)数组名代表首元素地址{(2)中特里除外}
#include<stdio.h>
int main()
{
int arr[5] = { 1, 2, 3, 4, 5 };
//arr数组名,代表首元素的地址
printf("%p\n",arr);
printf("%p\n",&arr[0]);
return 0;
}
(2)特例sizeof(数组名),计算整个数组大小,sizeof内部单独放一个数组名,数组名表示整个数组
#include<stdio.h>
int main()
{
int arr[5] = { 1, 2, 3, 4, 5 };
printf("%d\n", sizeof(arr));
return 0;
}