1.什么是数组?
数组是由一系类型相同,数据对象依次排列组合而成。组成数组的数据对象,被称作数组的元素。
2.如何定义数组?
(1).定义数组
//初始化数组
int arr[5]={1,2,3,4,5};
int arr[10]={1,2,3,4,5};//其他被填0
1 2 3 4 5 0 0 0 0 0//此时的数组
int arr[]={1,2,3,4,5,6,7,8,9,10}
//当然也可以由元素来决定数组的长度
(2).访问数组元素
#include<stdio.h>
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9};
printf("%d\n",arr[4]);
return 0;
}
#include<stdio.h>
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int i;
for(i=0;i<10;i++){
printf("%d\n",arr[i]);
}
return 0;
}
(3).修改数组元素
#include<stdio.h>
int main()
{
int arr[10]={1,2};
printf("%d\n",arr[5]);
arr[5]=99;
printf("%d",arr[5]);
return 0;
}
3.数组所占空间
#include<stdio.h>
int main()
{
char arr1[10];
short arr2[10];
int arr3[10];
long long arr4[10];
float arr5[10];
double arr6[10];
printf("%d\n", sizeof(arr1));
printf("%d\n", sizeof(arr2));
printf("%d\n", sizeof(arr3));
printf("%d\n", sizeof(arr4));
printf("%d\n", sizeof(arr5));
printf("%d\n", sizeof(arr6));
return 0;
}
运行结果:
可以看出:数组所占的空间=单个元素所占的空间*数组元素个数
4.如何给数组赋值?
- 不能整体复制。例:arr1=arr2(❌)
- 初始化列表只能用于初始化,赋值不行。
(1).利用for循环赋值
#include<stdio.h>
int main()
{
int arr1[10] = { 0 };
int arr2[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (int i = 0; i < 10; i++) {
arr1[i] = arr2[i];
printf("%d", arr1[i]);
}
return 0;
}
(2).内存复制memcpy函数
memcpy(目标数组,原始数组,需要赋值的字节大小)
#include<stdio.h>
#include<memory.h>
int main()
{
int arr1[10] = { 0 };
int arr2[10] = { 1,2,3,4,5,6,7,8,9,10 };
memcpy(arr1, arr2, sizeof(arr1));
for (int i = 0; i < 10; i++)
printf("%d", arr1[i]);
return 0;
}