【从零基础学习C语言】一维数组与二维数组—第四篇

  6d63dc5dd3994f75ae53a20768cc10f6.gif

🏆 个人主页:🎈 @太阳哥哥 🎈

🎁 本文收录专栏:🎈 C语言学习之路 🎈

🛒 其他专栏:🎈 ARM学习之路 🎈

📝 学习格言:路漫漫其修远兮,吾将上下而求索

💡 欢迎点赞、关注、收藏( •̀ ω •́ )✧   一起努力,一起学习!

目录

1、一维数组

1.1、完全初始化

1.2、部分初始化

1.3、一维数组的使用

1.4、一维数组的遍历

1.5、一维数组内存空间

2、字符数组

2.1、字符数组内存空间

2.2、字符数组的初始化

2.3、、字符串数组操作

3、二维数组

3.1、二维数组内存空间

3.2、二维数组初始化

3.2.1、分段初始化

3.2.2、连续初始化


1、一维数组

        数组:就是一组数据,就是用来存储一组数据,数据是由基本上护数据类型构成出来,叫做构造数据类型,相同的数据类型的一组数据(相同的数据类型数据的有序集合),数组类型可以存储多个相同类型数据。

        格式:元素类型 数组名[元素个数];

        数组初始化:定义数组时进行赋值操作,就叫做初始化,就是初始化数组(数据这个集合)的元素

1.1、完全初始化

        按照元素个数全部进行初始化,在其中花括号{},指定数据元素的值(对各元素进行初始化),各数据元素值使用,逗号隔开

int num[3] = {1,2,3}//完全初始化,num[0] == 1; num[1] == 2;num[2] == 3;

  不指定元素个数,根据初始化的值的个数,来确定元素个数

int num[] = {1,2,3}//完全初始化,根据元素的值来确定元素个数

        注意:只有初始化时可以不写元素个数,当作完全初始化来判断个数

1.2、部分初始化

  必须有元素个数,进行部分初始化,没有初始化的元素,系统会自动把其他元素设置为0

int num[3] = {1,2}//部分初始化

  指定部分初始化的元素

int a[5] = { [4] = 1,[1] = 2 };
//初始化的元素:a[1],a[4]
int b[] = {[2] = 1};//大小为3,部分初始化最大的为最为一个元素

1.3、一维数组的使用

        数组的使用就是使用数组中的元素,由于数组元素没有变量名的说话,不能使用变量名来操作元素;数组表示其中的元素使用编号的方式,只要知道编号就知道这个元素

        数组元素的表示:

        如果数组没有初始化,或数组元素之后想进行修改,这时就需要我们自己进行赋值,把内容存储到数组中

#include<stdio.h>
​
int main()
{
        int a[5];//定义一个数组,下面挨个初始化,其中a[4]未被初始化,数组中的元素存储的值是随机
值
        a[0] = 0;
        a[1] = 1;
        a[2] = 2;
        a[3] = 3;
​
        printf("a[0]=%d\n a[1]=%d\n a[2]=%d\n a[3]=%d\n a[4]=%d\n",a[0],a[1],a[2],a[3],a[4]);
}
 

  •         没有进行初始化赋值,数组中的元素存储的值是随机的值

1.4、一维数组的遍历

  遍历:查看使用访问到数组的每一个元素,叫做数组的遍历,可以用for循环遍历数组

  遍历形式

for(int i = 0;;i++)
{
    a[i];
}

注意:

  • 使用的元素范围不要超过数组的索引范围,从0开始,到元素个数-1

  • 使用元素时,不要使用未进行初始化(或未赋值)的元素,因为里面是随机值或0

  • 在初始化完成后,不能在一次性对数组中的多个元素进行赋值,如:c = {1,2,3};错误的

1.5、一维数组内存空间

        申请一段没有被使用的连续空间,依次用作其中每个元素存储

  在定义数组时,数组的[大小]只能是整数个

int a[10];//申请10个元素
int a[n];//申请n个元素,但是申请的n表示的是当前n的值为多少,如 n == 5,相当于int a[5],不管之后n为多少,数组大小不变

2、字符数组

2.1、字符数组内存空间

        字符数组:定义的数组类型,每一个元素为一个字符,是一个字符集合

        字符串:多个字符有序的排列在一起形成一个整体就叫做字符串,是以双引号表示

        如:“ok!not”====>只要是字符串默认最后有一个空字符('\0')表示字符串结束

        在C语言中,没有专门的一个类型叫做字符串变量类型,可以使用一个字符数组来进行存储字符串,就是把字符串的所有字符依次存储到数组中

        字符串存储到字符数组时,为了能够表示是一个字符串,需要把结束字符'\0',也存储到字符数组中,有了结束表示'\0',字符数组的大小就不再作为字符数组存储了多少个字符

char buf[10];
buf[9] = 'c';
//字符数组存储的字符个数,由数组大小决定
​
char buf[10] = "hello"
//相当于存储了6个字符,后面的不算(因为字符串就是以'\0'结束)

2.2、字符数组的初始化

        格式:

        字符初始化:字符类型 数组名[大小] = {'a','b','c'};

        字符串的初始化:字符类型 数组名[大小] = "abcdef";

char buf1[10] = {'1','2','3','\0'};
char buf2[10] = "123";//默认会把'\0'添加到数组中
char buf3[10]  = "1234567890";//'\0'没有存储到数组中,如果没有报错,存储在数组之后下一个位置上
    
char buf4[] = "hello";//初始化时没有指定数组大小,则数组大小根据初始化的值(字符个数)的个数决定,大小为6,字符串有一个结束符'\0'

2.3、、字符串数组操作

        意味着把数组用作字符串的使用方式,有结束标志'\0'

        字符串的输出:只会输出到'\0'字符为止

printf("%s",字符数组名(字符串));,输出字符数组直到'\0'结束

#include<stdio.h>
​
int main()
{
​
        char buf[10] = "hello";
        buf[8] = 'x';
        buf[9] = 'y';
​
        printf("%s\n",buf);//只会打印字符串"hello"
        for(int i = 0;i<10;i++)
        {
​
                printf("%c\n",buf[i]);//每一个都遍历,包括null
​
        }
        return 0;
​
}

  字符串的输入:scanf("%s",数组名);

#include<stdio.h>
int main()
{
    char buf[10] = "0";
    scanf("%s",buf);
    printf("%s\n",buf);
}

  • 字符数组如果想当作字符串进行操作,则考虑‘\0’这个字符串的结束标记

  • 字符数组当作普通数组进行操作,则是单个字符的操作,每个元素操作

3、二维数组

        二维数组:数组是多个元素的集合,数组中,如果每个元素也是一个数组,就叫做二维数组

        格式:数组元素类型 数组名[二维数组数组大小] [一维数组大小];

        int array[3][5]

3.1、二维数组内存空间

3.2、二维数组初始化

3.2.1、分段初始化

int array1[3][5] = {{1,2,3},{1,2,3,4,5}};
int array2[3][5] = {{1,2,3},{1,2,3,4,5},{1,2,3,4}};//用花括号,表示初始化每一个成员
//array[0] 能够进行整体操作吗?不行,因为还是一个数组

3.2.2、连续初始化

int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
//a[0][0],a[0][1],a[0][2],a[0][3],a[1][0],a[1][1]......
int b[3][4] = {1,2,3,4,5,6};
//b[0][0] = 1,b[0][1] = 2,b[0][2] = 3,b[0][3] = 4,b[1][0] = 5,b[1][1] = 6,b[1][2] = 0......0

        在二维数组初始化时,由于有数据值,所以可以不写元素个数(二维数组元素个数),根据值来确定

 
✨本篇到此结束啦!欢迎点赞👍收藏❤关注😎

ade2d02221184de18874af569fd12e2c.png

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

漫漫长夜想学习

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

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

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

打赏作者

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

抵扣说明:

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

余额充值