1.1 一维数组的创建和初始化

1、数组的创建
<元素类型> 数组名称[数组长度]
需要定义数组的类型和数组的大小;

  1. int arr[4];
  2. 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、注意事项

  1. 只有在初始化时可以使用花括号赋值,其他时候不可以;
  2. 不能把数组作为值赋值给其他变量;

    1.2 一维数组的使用

    通过下标来访问 ```c

    include

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头文件;