C语言成长之路41:一维数组详解

声明:本笔记基于 B站UP主「来自程序员的暴击」的 「C语言成长之路」中对应课程;


 1、数组的概念:

  数组是可以在内存中连续存储多个元素的结构;

  数组中的所有元素必须属于相同的数据类型;

举例:

1     int a[5] = {0,1,2,3,4};
2     printf("%p",&a);

 

2、数组语法

类型:

类型 数组名[元素个数] = {0};

例:

#include <stdlib.h>
#include <stdio.h>

int main() {
    /*
        C语言成长之路41:一维数组详解
    */
    int a[10] = { 0 };
    int b[] = { 1,2,3 };    //    当数组元素确定的时候,数组的个数可以忽略
    int c[5] = { 1,2,3 };    //    不足用0填充
}

 

注:要防止下标越界的错误发生,对上面声明的数组a来说,有效的下标应该是0~9,在程序中如果出现了a[10],编译器可能不会报错,但是这个越界可能会引起程序的崩溃。

#include <stdlib.h>
#include <stdio.h>

int main() {
    /*
        C语言成长之路41:一维数组详解
    */
    int a[10] = { 0 };
    int b[] = { 1,2,3 };    //    当数组元素确定的时候,数组的个数可以忽略
    printf("%p\n", &b);    //    结果:00E9F940  <--内存地址
    int c[5] = { 1,2,3 };    //    不足用0填充
    for (int i = 0; i < 5; i++) {
        printf("%d\n", c[i]);
        /*    c[0] = 1;
            c[1] = 2;
            c[2] = 3;
            c[3] = 0;
            c[4] = 0;
        */
    }
}

 

还有另外一种思路,通过define去定义常量,在数组中进行引用,这个方法好在于在大型项目当中,可以通过修改define的值,进行批量修改:

 

 

 注:一个int类型占用4个字节,int类型的数组里面有N个元素,那就是N*4个字节的大小


 

思考:

求一个未知元素个数的数组的大小:

 1 #include <stdlib.h>
 2 #include <stdio.h>
 3 #define N 5    //定义常量N,并赋值为int类型的5
 4 
 5 int main() {
 6     /*
 7         C语言成长之路41:一维数组详解
 8     */
 9     int d[N] = {1,2,3,4,5};
10     int array_num = sizeof(d) / sizeof(int);
11     printf("d's array_num = %d", array_num);    //    结果:d's array_num = 5
12 }

 

循环打印数组:

#include <stdio.h>

void main(){
    int a[5] = {1,2,3,4,5};
    for (int i = 0;i<5;i++){
        printf("%d\n",a[i]);
    }
};

 

循环打印数组元素的内存地址:

#include <stdio.h>

void main(){
    int a[5] = {1,2,3,4,5};
    for (int i = 0;i<5;i++){
        printf("a[%d] = %d, &a[%d] = %x\n",i,a[i],i,&a[i]);
    }
    /*  结果如下:
     *  a[0] = 1, &a[0] = ee5f8900
     *  a[1] = 2, &a[1] = ee5f8904
     *  a[2] = 3, &a[2] = ee5f8908
     *  a[3] = 4, &a[3] = ee5f890c
     *  a[4] = 5, &a[4] = ee5f8910
     */
};

 

关于转换符的一些说明:

%a(%A) 浮点数、十六bai进制du数字zhi和p-(P-)记数法(C99)
%c 字符
%d 有符号十进制整数
%f 浮点数dao(包括float和doulbe)
%e(%E) 浮点数指数输出[e-(E-)记数法]
%g(%G) 浮点数不显无意义的零"0"
%i 有符号十进制整数(与%d相同)
%u 无符号十进制整数
%o 八进制整数 e.g. 0123
%x(%X) 十六进制整数0f(0F) e.g. 0x1234
%p 指针
%s 字符串
%% "%"

 

posted @ 2020-08-04 00:44  Akne  阅读(543)  评论(0编辑  收藏  举报