当前位置:   article > 正文

c语言中的数组

c语言中的数组

数组

数组是一种构造类型,是由基本类型构造而成。当我们想用一群变量来描述同一类相同的东西时候,比如100个年龄变量,我们可以这样int age1;int age2;int age3;……int age 100;这样即不方便书写,也不方便管理,此时数组就出现了,int age[100]就能搞定。

构造类型带来了书写和管理的方便。接下来我们要研究其定义,大小,初始化和访问。

2.1 基本语法

在这里插入图片描述
在这里插入图片描述

2.1.1 数组的使用(重点)
2.1.2 数组的初始化
  • 在定义数组的同时进行赋值,称为初始化
  • 全局数组若不初始化,编译器将其初始化为零
  • 局部数组若不初始化,内容为随机值

凡是构造类型,要么在初始化的时候初始化, 要么对集合中的每个元素单独初始化。定义以后,不可以再以初始化的方式初始化。凡是基础数据类型,既可以在定义的时候初始化,也可以先定义后初始化。
在这里插入图片描述

2.1.3 数组名
  • 数组名是一个地址的常量,代表数组中首元素的地址
  • 一维数组在内存中是一组连续的存储空间。
    在这里插入图片描述

2.2 数组案例

2.2.1 一维数组的最大值

在这里插入图片描述
2.2.2 一维数组的逆置
在这里插入图片描述### 2.3 数组和指针

2.3.1 通过指针操作数组元素(重点)
  • 数组名字是数组的首元素地址,但它是一个常量
  • * 和 [] 效果一样,都是操作指针所指向的内存
    在这里插入图片描述
 1.数组名是一个常量,不允许重新赋值。
 2.指针变量是一个变量,可以重新赋值。
 3.p+i 和 array+i 均表示数组元素 array[i]的地址,均指向 array[i]
 4.*(p+i)和*(array+i)均表示 p+i 和 array+i 所指对象的内容 array[i]。
 5.*p++:等价于*(p++)。其作用:先得到*p,再使 p=p+1。
  • 1
  • 2
  • 3
  • 4
  • 5
#include <stdio.h>

int main() {
    int array[10] = { 1,2,3,4,65,6,12,13,14,15 };



    int* p = &array;
    printf("array=== %p\n", &array);
    printf("p    === %p\n", p);
    int len = sizeof(array) / sizeof(array[0]);

    for (int i = 0; i < len; i++)
    {

        // array+i 和p+i  指向的都是地址  array[i]的地址
        // *(array+i) 和*(p+i) 指向的内容  ====array[i]

        // printf("arr[%d]  =  %d\n", i, array[i]);
        // printf("arr[%d]  =  %d\n", i, *(array + i));

        // printf("arr[%d]  =  %d\n", i, *(p + i));

        // *(p++)  == *p++  先获取*p  p=p+1
        // printf("arr[%d]  =  %d\n", i, *(p++));
        printf("arr[%d]  =  %d\n", i, *p++);
        /* code */
    }


    return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
2.3.2 指针数组
  • 指针数组,它是数组,数组的每个元素都是指针类型
    在这里插入图片描述
2.3.3 数组名做函数参数
  • 数组名做函数参数,函数的形参本质上就是指针
    在这里插入图片描述

2.4 字符数组与字符串

2.4.1 字符数组与字符串区别(重点)
  • C语言中没有字符串这种数据类型,可以通过char的数组来替代
  • 数字0(和字符 ‘\0’ 等价)结尾的char数组就是一个字符串,字符串是一种特殊的char的数组
  • 在这里插入图片描述
    如果char数组没有以数字0结尾,那么就不是一个字符串,只是普通字符数组
    在这里插入图片描述
2.4.2 字符指针(重点)
  • 字符指针可直接赋值为字符串,保存的实际上是字符串的首地址

  • 这时候,字符串指针所指向的内存不能修改,指针变量本身可以修改
    在这里插入图片描述

2.4.3 字符串常用库函数
strlen

在这里插入图片描述
strcpy
在这里插入图片描述
strcat
在这里插入图片描述
strcmp
在这里插入图片描述

2.4.4 字符串案例
  • 需求:自定义一个函数my_strlen(),实现的功能和strlen一样
    在这里插入图片描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/448953
推荐阅读
相关标签
  

闽ICP备14008679号