1.1 一维数组的创建和初始化
1、数组的创建
<元素类型> 数组名称[数组长度]
需要定义数组的类型和数组的大小;
int arr[4];
int arr[3] = {3,2,1};
其中数组的大小只能是常量;
2、数组的初始化
可以部分初始化,也可以全部初始化
int arr[3] = {2,4}//第三个数字默认为0
int arr2[] = {4,3,2,1};//这种初始化方式可以不指定长度;
char arr3[] = "abcd";//这样可以初始化字符数组
3、数组部分初始化
数组如果没有初始化就直接使用,那么得到的就是没有意义的垃圾值,但如果部分初始化,编译器会自动将其他元素初始化为0;
#include <stdio.h>
#include <string.h>
#define SIZE 4
//main函数
int main(void){
int ch[SIZE] = {10,11};
int i;
for(i = 0; i<SIZE ;i++){
//输出的值为10、11、0、0
printf("第%d个元素的值为:%d\n", i, ch[i]);
}
return 0;
}
4、省略数组的长度
还可以省略方括号中的数字,让编译器自己来数元素的个数,这样可以避免元素个数大于定义数组的长度导致报错;
#include <stdio.h>
#include <string.h>
//main函数
int main(void){
int ch[] = {10,11,12,13,14,15};
int i;
for(i = 0; i<sizeof(ch)/sizeof(ch[0]) ;i++){
printf("第%d个元素的值为:%d\n", i, ch[i]);
}
return 0;
}
5、定义不可变数组
如果想定义一个不变的数组,可以使用const关键字
#include <stdio.h>
#include <string.h>
//main函数
int main(void){
//定义一个不可变的数组
const int ch[] = {10,11,12,13,14,15};
return 0;
}
6、指定初始化
指定任意位置的元素进行初始化,不用管其他元素
#include <stdio.h>
#include <string.h>
//main函数
int main(void){
int ch[] = {10,11,[8]=8,13,[3]=14,15};
int i;
/*
第0个元素的值为:10
第1个元素的值为:11
第2个元素的值为:0
第3个元素的值为:14
第4个元素的值为:15
第5个元素的值为:0
第6个元素的值为:0
第7个元素的值为:0
第8个元素的值为:8
第9个元素的值为:13
*/
for(i = 0; i<sizeof(ch)/sizeof(ch[0]) ;i++){
printf("第%d个元素的值为:%d\n", i, ch[i]);
}
return 0;
}
7、注意事项
int main(){ char arr[4]=”abcd”; int i; for(i = 0;i<4;i++){ printf(“%c\n”,arr[i]); } return 0; }
计算数组的长度可以使用sizeof(arr)/sizeof(arr[0])
```c
int main(){
char arr[4]="abcd";
int i;
for(i = 0;i<sizeof(arr)/sizeof(arr[0]);i++){
printf("%c\n",arr[i]);
}
return 0;
}
1.3 数组的特点
同一个数组的所有元素类型相同
数组一旦定义长度不可变
数组地存储地址时连续的
1.4 二维数组的定义
二维数组定义的时候可以不给定行数,让编译器去数,但列数必须要给
int arr[][3] = {
{3,2,1},
{6,5,4},};
二维数组的使用为:
int main(){
int arr[][3] = {
{3,2,1},
{6,5,4},};
int i,j;
for(i = 0;i<2;i++){
for(j=0;j<3;j++){
printf("%d\n",arr[i][j]);
}
}
return 0;
}
1.5 使用数组作为参数
如果数组作为参数,则在函数内不能使用sizeof()函数,如果想要求数组的大小,最好将数组的长度也作为参数传入;
int main(){
int arr[]={4,3,2,1};
int length = sizeof(arr)/sizeof(arr[0]);
double res = myAvg(arr,length);
printf("%lu\n",res);
return 0;
}
double myAvg(int arr[],int length){
int num = 0;
int i;
for(i=0;i<length;i++){
num += arr[i];
}
return num/length;
}
1.6 sizeof() 和strlen()函数
sizeof() 函数的作用是以字节为单位给出对象的大小
#include <stdio.h>
//main函数
int main(void){
int i_num = 32767;
printf("int类型的数据占用%zd个字节,i_num这个数字占用%zd个字节\n",sizeof(int),sizeof(i_num));
printf("i_num这个数字占用%zd个字节,这里不使用()也可以\n",sizeof i_num);
return 0;
}
其中计算特定数据时可以不使用(),但是不建议;
strlen()函数的作用是以字节为单位给出对象的大小,注意,需要string.h头文件;