数组时相同数据的有序集合。
int arr[10] = { 31,42,13,84,75,6,57,48,29,10 };
printf("arr[0]=%x\n", &arr[0]);
printf("arr[0]=%x\n", &arr[1]);
printf("arr[0]=%x\n", &arr[2]);
printf("arr[0]=%x\n", &arr[3]);
printf("arr[0]=%x\n", &arr[4]);
输出
arr[0]=a66ff888
arr[0]=a66ff88c
arr[0]=a66ff890
arr[0]=a66ff894
arr[0]=a66ff898
各个元素的内存地址连续
数组名为地址。是数组首元素的地址。arr==&arr[0]
求大小:
int a = 2, b = 5, c = 7;
int arr[10] = { 1,2,3,5,16,5,4,6,9 };
printf("数组大小:%u\n",sizeof(arr));
printf("数组元素的大小:%u\n",sizeof(arr[0]));
输出
40
4
数组初始化:
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int arr[10]={1,2,3,6,4,5,8,7}; 剩余未初始化的元素,默认为0值
int arr[10]={0}; 初始化一个全为0的数组
int arr[ ]={1,2,3,4,5,6}; 编译器自动求取元素个数
int arr[ ]={0}; 只有一个元素为0
int arr[10];
arr[0]=1;
arr[2]=54;
arr[3]=2;
输出
1
54
随机数
2
随机数
随机数
随机数
随机数
随机数
随机数
数组名为地址。是数组首元素的地址。arr==&arr[0];
printf("数组大小:%u\n",sizeof (arr) );
printf("数组元素的大小:%u\n",sizeof(arr[0]));
printf("数组元素个数:%d\n",sizeof(arr)/sizeof(arr[0]));
数据的第一个元素下标:0 //arr[0~N-1] n为数组个数
数据的最后一个元素下标:sizeof(arr)/sizeof(arr[0])-1
数组元素逆序:
int arr[] = { 1, 2, 3, 6, 45, 8, 21, 5};
int len = sizeof(arr) / sizeof(arr[0]) ; //数组元素个数
int i = 0; //数组的首元素下标
int j = len - 1; //表示数组的最后一个元素下标
int temp = 0; //临时变量
for (size_t m = 0; m < sizeof(arr) / sizeof(arr[0]); m++)
{
printf("%d ",arr[m]);
}
printf("\n");
//交互 数组元素,做逆序
while (i<j)
{
temp=arr[i];
arr[i]=arr[j];
arr[j] = temp;
i++;
j--;
}
for (size_t n = 0; n < len; n++)
{
printf("%d ",arr[n]);
}
printf("\n");
//打印交换后的数组
输出
1 2 3 6 45 8 21 5
5 21 8 45 6 3 2 1
冒泡排序:
int arr[] = {5, 16, 8, 21, 2, 3, 74, 7, 65};
int n = sizeof(arr) / sizeof(arr[0]); //数组元素总数
int temp = 0; //临时变量,用于暂存
for (size_t i = 0;i<n;i++)
{
printf("%d ", arr[i]);
}
printf("\n"); //把原来的数组打印出来
for (size_t i = 0;i < 9 - 1 -i;i++) //i执行为一行
{
for (size_t j = 0;j<n-1-i;j++) //j执行为一列
if (arr[j] > arr[j + 1]) //满足条件,如果前比后大,就交换位置
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] =temp;
}
}
for (size_t i = 0;i<n;i++)
{
printf("%d ", arr[i]);
}
printf("\n");
//将排列后的数组打印出来