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。
#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;
}

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一样
    在这里插入图片描述
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋野酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值