C语言中的一维数组和二维数组

发布于:2022-12-13 ⋅ 阅读:(608) ⋅ 点赞:(0)

CSDN话题挑战赛第2期
参赛话题:学习笔记

学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?

目录

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

数组的创建

数组的初始化

总结

二.sizeof和strlen两个函数的区别

三.一维数组在内存中的存储

 四.二维数组的创建和初始化

二维数组的创建

二维数组的初始化

 注意:

五.二维数组的使用

 六.二维数组在内存中的存储


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

数组的创建

数组是一组相同类型元素的集合。数组的创建方式∶

 例子:

 注意:数组创建中,[ ]中要给一个常量才可以,不可以使用变量。

数组的初始化

数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。看代码:

数组的不完全初始化


不完全初始化就是开辟的空间多了,而多余的部分就默认是0,就如上图所示,比如:

总结

  1. 数组是使用下标来访问的,下标从0开始。
  2. 数组的大小可以通过计算得到。


二.sizeof和strlen两个函数的区别

  1. strlen和sizeof没有什么关联。
  2. strlen是求字符串长度的,只能针对字符串求长度,是库函数需要引用头文件#include<string.h>。
  3. sizeof计算变量、数组、类型的大小,单位是字节,属于操作符不需要引用特别的头文件。

再举个例子:

解释一下随机值:字符串是以'\0'为结束符,strlen就是找'\0',找到就输出,而上图中arr2没有字符‘\0’,所以strlen会输出什么值完全就会随机。

三.一维数组在内存中的存储

看代码:

#include<stdio.h>
int main()
{
    int a[10]={1,2,3,4,5,6,7,8,9,0};
    int sz=sizeof(a)/sizeof(a[0]);//求出数组a的元素个数
    for(int i=0;i<sz;i++)
    {
        printf("&a[%d]的地址是%p\n",i,&a[i]);
    }
}

输出结果是:

 因为数组里面保存的是int整型,int是4个字节

 仔细观察输出的结果,我们知道,随着数组下标的增长,元素的地址,也在有规律的递增。由此可以得出结论∶数组在内存中是连续存放的。

 

 四.二维数组的创建和初始化

二维数组的创建

二维数组的初始化

 用图来加深一些理解:

 同样二维数组也会有不完全初始化的情况,那么他就是按顺序依次存储,如下图:

 关于二维数组还有一种初始化方法,就是可以具体某一行存储哪些内容,具体如下:

 注意:


 一维数组中的[ ]中就可以省略,二维数组中[ ][ ]就只有第二个也就是行可以省略。

五.二维数组的使用

二维数组的使用也是通过下标的方式,比如:

 用代码看看:
 

#include<stdio.h>
int main()
{
    int a[3][4]={{1,2},{3,4,5,6}};
    for (int i=0;i<3;i++)//3行
    {

        for(int j=0;j<4;j++)//4列
        {
            printf("%d ",a[i][j]);
        }
        printf("\n");//每输出一行就换行
    }
}

 运行结果是:

 六.二维数组在内存中的存储

我们像一维数组那样将其地址打印出来看看

 看到结果很明显,其实在二维数组内存中的存储也是连续的

 

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到