C语言之利用数组处理批量数据学习笔记

阅读: 评论:0

C语言之利用数组处理批量数据学习笔记

C语言之利用数组处理批量数据学习笔记

1,前言

这是一篇C语言的博客,如果你学过python那么我想你应该很熟悉什么是一维数组,什么是二位数组。那会说C语言与python语言不一样,他们的概念也应该不一样把?不不不他们对一维、二维数组的叙述都是一样的,只不过他们对操作这个数组的方式不一样。C语言是采用for循环的形式进行的。python好像也是这样吧,我记得是用函数和方法。

为了减少复习的时间,我会删减一些内容,但是这些内容在python的一维数组二维数组是一样的。因为我现在感觉写博客太浪费时间了,但是不写博客我又记不住。继续肝。

(一维二维数据相关概念)[python之文件和数据格式学习笔记 | huan’s Notebook (yanghuanh1314.github.io)]

2,一维数组

我一句话概括一维数组就是一行数、线性。好了不说了

2.1,定义数组

C语言怎么定义一个一维数组。

类型符 数组名[常量表达式]

int a[5];  // 定义一个数组

就这样,定义一个数组。这个元素有5个元素。

  1. 他的命名规则与变量的命名规则一样。
  2. a[0] a[1] a[2] a[3] a[5] 需要注意一下,我们定义的是a[5] 但是没有下标为a[5] 的元素。在这里补充一句前面的a[0] a[1] 等等也是下标哦。实在是不知道加那里了。
  3. 然后是常量表达式。这里有问题吗?有,什么是常量。还有表达式的是,即int a[3+5] 也是合法的。但是要是说int a[i] 这就不可以了。
  4. 这里提到了一个空间大小:一个整数是4个字节,5个整数,则4*5=20

2.2,引用数组

学会定义一个数组,

int a[5];

那么应该怎么访问里面的元素呢?我们应该怎么用呢

数组名[下标] 只能一个一个访问,不可以一次访问整个整体。

int n[10];  // 定义一个数组,有10个元素
t = a[5];  // 将第5个元素赋值给t

然后是遍历数组,用到for循环。

很简单。

2.3,数组初始化

我们定义了一个数组,但是怎么让他里面有东西。两种方法

  1. 静态赋值

    其实在这个程序中已经出现答案了

    int a[10]={1,2,3,4,5,6,7,8,9,10};
    

    要注意是{} 而不是[] 刚才已经试过了。但我记得python好像是[]吧维数组

    还有一些赋值方法。

    int a[5]={1,2,3};
    

    看这个,这个元素应该有5个元素,我却给了3个。剩下两个是什么?0

    等价于

    int a[10]={1,2,3,0,0};
    

    如果说确定这个数组的元素,就可以不用给定数组长度。

    int a[]={1,2,3};
    
  2. 动态赋值

    什么是动态赋值,就是在键盘输入。还是用个for

    因为要用for循环遍历每一个元素的地址。所以就

以上就是一维数组的内容,

2,二维数组

什么是二维数组,他就是类似表格,有行有列。同时说起二维数组,上次遇到了一个题,忘得差不多了。

2.1,定义数组

怎么定义一个二维数组呢?

类型符 数组名[常量表达式][常量表达式]

int a [3][4];  // 定义一个整数类型的二维数组

我们定义了一个3*4(三行四列)的数组。因为二维数组是一个表格,有行有列。三行思虑。

其实这个也是一个一维数组,特殊的一维数组。

可以看作是由三行的一维数组组成。一维数组数组是由四个元素组成。

我们展开来说a[3][4]

a[0] ------ a[0][0] a[0][1] a[0][2] a[0][3]
a[1] ------ a[1][0] a[1][1] a[1][2] a[1][3]
a[2] ------ a[2][0] a[2][1] a[2][2] a[2][3]

额怎么看呢,书上是这么说的

可以把a[1] a[1] a[2] 看作3个一维数组的名字,上面定义的二维数组可以理解为有定义了三个一维数组。

怎么说呢,我们就以第一行举例。第一行的一维数组叫a[0] 然后里面有四个元素a[0] [0] a[0] [1] a[0] [2] a[0] [4] ,hao!我用空格标注一下。

现在是二维数组在内存里面是怎么存储的呢?一维数组因为是线性的,是由一溜全部下来就会。二维数组是表格,怎么存储呢?

还是顺序存储,一行元素存储完,之后就是第二行的元素。我们看图

2.2,引用数组

我们定义了一个二维数组

int a[3][4];

我们应该怎么用呢。就是说怎么取

数组名[下标][下标]

比如

int a[3][4]; // 定义数组
t = a[1][2]; // 取第1行第2列的这个元素

然后呢这个下标不是说你想怎么去就怎么取,他是有个范围的,行下标为02,列下标03

这是遍历二维数组,两个for循环。第一层是遍历行,第二行遍历列

我们在第二个for结束后加一个printf("n") 试试。

好!ok!

2.3,初始化数组

那这个数组怎么赋值呢?

  1. 静态赋值

    • 分行赋值

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

      一个大括号为一行,共三行。一个大括号里面有4个元素。

    • 整体放入花括号

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

      赋值成这样,那你会想系统会怎么分配这个呢,系统是聪明的,他会以四个元素为一组。

      第一行:1,2,3,4 ,第二行: 5,6,7,8 ,第三行:9,10,11,12

    • 部分赋值

      这个里面有很多种,但是他们说的都是一个。

      • int a[3][4]={{1},{5},{9}};
        

      他是这样排列的,因为指定了a[0][0] a[1][0] a[2][0],其余为空自动用0 填充

      部分赋值,就是这样,以此类推,有的地方可以不赋值,那就是默认为0

  2. 动态赋值

    动态赋值难吗,我们可以参考一维数组的动态赋值

    这是两个for循环

4,字符数组

字符型数据是以字符的ASCII代码存储在存储单元中的一般占一个字节。由于ASCII代码属于整数形式,因此在C 99标准中,把字符类型归纳为整数类型的一种

C语言中没有字符串类型,也没有字符串变量,字符串是存放在字符型数组中的

这两段描述中,第一段应该是知道。第二段,我想起了我们有一个作业,我还想着用字符串去做呢,找了一圈,就是没有字符串,现在找到了。没有!

4.1,定义字符数组

这个很简单。和定义一维数组的方式一样

char c[9];

char 字符类型,其他的和一维数组是一样的

c[0]='I';c[1]=' ';c[2]='a';c[2]='a';c[3]='m';c[4]=' ';c[5]='h';c[6]='a';c[7]='p';c[8]='p';c[9]='y';

这10个元素在数组存储的状态。

我们说过字符型数据是以正数类型存储的,所以我们也可以

int a[10];
a[0]='a';

这样也可以,但是呢,浪费内存。 int是4个字节,char 是一个

4.2.,引用字符数组

怎么引用和一维数组一样。

4.3.初始化字符数组

char c[10]={'I',' ','a','m',' ','h','a','p','p','y'};

在我们复制过程中会出现两种情况,字符个数大于数组长度或者小于。

  • 正常情况

    这是正常情况的输出

  • 小于数组长度

    输出是这样的,但是老师说的小于数组长度会用 填充

  • 大于

    报错!!!

4.4,字符串和字符串结束标志

这里提到一个字符串结束标识符: 什么意思呢?如果字符串长度比数组长度短,则 表示结束

比如定义了一个长度为10的字符数组,但是我只是输入了5个字符,以 结束。那么就会说这个里面只有5个字符。

happy 是5个字节,但是在数组中占10个字节。因此如果存储字符串常量,会自动加上 。所以在定义数组时数组长度最好是大于字符长度,。

还是回到printf("hello world")当向内存存储时系统会在字符d 的后面系统添加 ,之后这句语句被执行时,输出一个字符,系统判断义词,当系统判断到 时停止输出。

书上又补充了两种字符串初始化方法

char c[]={"I am happy"};
char c[]="I am happy";

但是要注意这个字符数组长度为11,因为在后面会有

char c[11]={'I',' ','a','m',' ','h','a','p','p','y', ''};

他们三个是等价的,要注意还有一个区别的单撇号和双撇号的用法。

还有

char c[10] = {"CHina"};

这个在字符存储的方试和之前一维数组的一样。长度不够,用0填充,但这次是

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-54p0rCoj-1642916086941)(C:UsersadminAppDataRoamingTyporatypora-user-imagesimage-20220123101055518.png)]

然后又提到了 可以不用,我好像蒙圈了

chae c[5] = {'c', 'h', 'i', 'n', 'a'};
chae c[6] = {'c', 'h', 'i', 'n', 'a', ''};

书上说加不加都可以,根据需要决定。加这个因为系统处理时肯定会加 为了统一,所以加

遇到 停止, 不输出。

如果有多个呢?输出第一个

就是在我们使用的时候分辨一下就可以了、

4.5,字符的输入输出

字符串的输入输出有两种方式

第一种:用%c 输入或者输出一个字符。

第二张:将整个字符串一次性输出输入用%s

这样,输出输入。注意在scanf() 不需要再有& 因为数组中规定数组名就是他的地址。就是说你已经取地址了;。

5,总结

好,这篇博客到这里就要结束了。

数组、批量处理数据。其实就把他当作一个工具来用,但用熟悉后,你就离不开他了。就比如现在我写python,第一件事就会想到数组。好用。但是需要for循环,一开始我脑子转不过来,多写写习惯了就好了。

然后看完字符数组,是不是就懵了。在字符数组这块只要掌握会定义数组和输出输入就ok了。至于这个 书上是自动加上的,我们为了方便,加!在定义数组长度时我们也可以稍微扩大一下下。

当然也不要太夸张。喜喜

三种数组,看似很不一样。记住一个即可。他们的套路一样啊

好了,到这里就结束了。如果有错误的地方请指正,因为我也是正在学习,如果我帮到了您,是我的荣幸。

谢谢大家。

好,这篇博客到这里就要结束了。

数组、批量处理数据。其实就把他当作一个工具来用,但用熟悉后,你就离不开他了。就比如现在我写python,第一件事就会想到数组。好用。但是需要for循环,一开始我脑子转不过来,多写写习惯了就好了。

然后看完字符数组,是不是就懵了。在字符数组这块只要掌握会定义数组和输出输入就ok了。至于这个 书上是自动加上的,我们为了方便,加!在定义数组长度时我们也可以稍微扩大一下下。

[外链图片转存中…(img-XmiXz7W0-1642916086942)]

当然也不要太夸张。喜喜

三种数组,看似很不一样。记住一个即可。他们的套路一样啊

好了,到这里就结束了。如果有错误的地方请指正,因为我也是正在学习,如果我帮到了您,是我的荣幸。

谢谢大家。

本文发布于:2024-01-30 20:40:04,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170661840822689.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数组   批量   学习笔记   语言   数据
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23