关于这一部分呢,看似很简单,实际运用起来却会有很多问题,课本上讲了,又没有完全讲清楚。 在运用数组的这个方法处理问题是十分灵活的,非常容易产生一些小错误导致代码不能正确运行。所以在本篇博客我将会对众多小细节加以解释,区分,同时也会举一些巧妙的实际运用。

在本片文章中数组主要为一维数组,从整型和字符型数组两方面讨论。

目录

整型数组

字符型数组

应用


整型数组

先看一下几种定义数组的方式

1.定义数组

int arr1[5];

该数组arr1只进行了定义,没有进行初始化所以里面的元素是一团乱麻。

2.定义空数组

int arr2[5]={0};

两种格式看上去十分相似但又不完全一样。

打开监视,注意观察此处,未初始化的整型数组自动将元素都赋值为'0'。这和后边介绍的字符型数组不同。

3.完全初始化

int arr3[5] = { 1,2,3,4,5};
int arr4[] = { 1,2,3,4,5 };

观察两个数组不同的定义方式,尽管arr4没给数组长度,但任然和arr3一样

4.不完全初始化

int arr5[5] = { 1,2,3};//可见后面自动补为0

arr5中定义了数组长度,但初始化的只有前三个元素,所以后面的全部都自动补为'0'

5.用scanf输入整型数组

int arr6[5];for (i = 0; i < 5; i++){scanf("%d", &arr6[i]);}

此处是常用的一种输入整型的方法。

要注意的是此处arr[i]前一定要记得加取址符'&'在输入时,整型元素用空格隔开(不同于后面介绍输入字符型数组的方法)

例如:

1 2 3 4 5       ENTER回车

 效果就是这样。

6.整型转化为ASCII码值

int arr7[5] = { 'a','b','c'};

如果我们在整型数组中输入字符会这么样呢根据ASCII码表

观察到字符转化为整型存储在元素之中。可以理解为字符和整型是等效的。

字符型数组

1.定义字符数组

char ch1[5];

和整型数组情况类似。

2.空数组

char ch2[] = { 0};
char ch3[5] = { 0 };///此处0为ASCII码表中对应的NULL所以为空字符

这里不同于整型数组,在此处存放'\0',意思为停止。

3.不完全初始化

char ch4[5] = { 'l','o','v' };//未完全初始化,自动补\0
char ch5[5] = { "lov" };
char ch6[5] = "lov";

’\0’是数组结束的标志。当ch6一样输入字符串时,会自动补齐‘\0’。这三种写法都是正确的。

4.完全初始化

char ch7[] = "love";
char ch8[4] = "love";

不同于整型数组,凡是在"  "之中的字符在初始化数组时。都会自动在后面补\0。当长度不足时,例如ch8,‘\0’当不下了,就不会补了。

5.字符数组与ASCII码值

char ch9[5] = { '1','2','3',97,98 };//在字符数组输入整型会转化为对应的ASCII字母

和直接在字符型数组中输入整型,会转化成对应的字母。可以理解为在此处整型和字符是等效的。

6.输入字符型数组

char ch10[5];
for (i = 0; i < 5; i++)scanf("%c", &ch10[i]);

和整型数组不一样,这里输入空格不能将元素隔开而会被当成元素直接使用。记得输入字符时候也要加&。

例如在此处输入    a   b     空格会记录在ch10[1]中。

还没结束,如果输入一段字符串的话,会导致空格输入提前结束。ps:数组名字ch11是数组首元ch11[0]的地址,所以此处不用&。

char ch11[5];for (i = 0; i < 5; i++)scanf("%s", ch11);

例如输入:   ab cd

所以我们如何输入一段带有空格的英语句子到字符数组中呢,第一种方法就是用循环scanf("%c")输入,第二种方法就是利用gets函数。

char ch12[5];gets(ch12);

在此处输入  a  b,结果如下:空格可以正常使用啦。

由此可见gats和scanf函数最大的区别就在于对空格的不同处理方式。

应用

题干:输入二进制数字,将其转化为十进制数字(例如输入1111,输出15)

大家可以思考一下,再看一下我给出的两种方法。

方法1:

#include<stdio.h>
int main()
{int i, D = 0;char B[50];gets(B);for (i = 0; B[i] != '\0'; i++){D = D * 2 + B[i] - '0';}printf("%d", D);
}

方法2:

#include<stdio.h>
int main()
{char B= { 0 };int D = 0;while (B = getchar(), B != '\n'){D = D * 2 + B - '0';}printf("%d", D);
}

以上就是本篇文章的全部内容啦。不知不觉字数已到了2000,写得很仔细,希望能对大家有一些帮助。

深入掌握数组定义与初始化相关推荐

  1. C++中数组定义及初始化

    一.一维数组 静态 int array[100]; 定义了数组array,并未对数组进行初始化 静态 int array[100] = {1,2}: 定义并初始化了数组array 动态 int* ar ...

  2. js二维数组定义和初始化的三种方法

    方法一:直接定义并且初始化,这种遇到数量少的情况可以用 var _TheArray = [["0-1","0-2"],["1-1",&quo ...

  3. c++二维数组定义与初始化

    int a[ ][ ]定义二维数组,静态申请 // 定义的二维数组如果不手动初始化的话,全局变量会被初始化为0,否则会随机初始化 int a[5]; // 定义一维数组 int a[2][3]; // ...

  4. verilog中数组的定义_verilog数组定义及其初始化

    这里的内存模型指的是内存的行为模型.Verilog中提供了两维数组来帮助我们建立内存的行为模型.具体来说,就是可以将内存宣称为一个reg类型的数组,这个数组中的任何一个单元都可以通过一个下标去访问.这 ...

  5. c数组(结构体数组)定义与初始化

    c数组定义与初始化 int array[100];//长度100; int array[100] = {1,2,3,4,5,5,6}//定义时进行初始化 int * a =0 ;//a指向int数据 ...

  6. 指针与数组的关系---初始化

    指针与数组的关系 一维数组的长度 数组不定义长度初始化 #include<stdio.h>int main(){int a[]={12,34,65,9};int *p;printf(&qu ...

  7. php一维数组的定义,PHP 数组定义、遍历的实现方法

    前言:接下来介绍的PHP学习笔记之数组的定义.遍历,希望对您有帮助.那么下面我们一起看看,具体内容所述如下: php中数组是一个特殊的数据类型,可以说是对象也可说是存储器了, 他里面可以存储php中其 ...

  8. Go 学习笔记(10)— 数组定义、数组声明、数组初始化、访问数组、数组相等、向函数传递数组

    1. 数组定义 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 2. 声明数组 Go 语言数组声明需要指定元素类型及元素个数,语 ...

  9. Java04-day04【IDEA(概述、启动配置、项目结构、内容辅助键、快捷键、模块操作)、数组(定义详解、动态初始化、访问)、内存分配、数组内存图】

    java零基础入门到精通(2019版)[黑马程序员] 视频+资料:[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] &qu ...

最新文章

  1. css 一侧是三角形的矩形_5种具有CSS形状和滤镜的精美图像效果
  2. 数字信号处理基础知识之DFT、DTFT、DFS、FFT基本概念扫盲
  3. 企业实战_10_Mycat集成ZK实现配置同步
  4. 学.net还是php,ASP.NET和php哪个更容易学
  5. hive解绑邮箱_django使用QQ企业邮箱发送邮件
  6. 语言生日创意代码_BlenderOSL代码编程
  7. 字母串按照字典序排序
  8. 解决安卓4.4webview的兼容性问题
  9. centos7 安装sogou输入法
  10. 东芝Toshiba e-STUDIO245 一体机驱动
  11. 广度优先搜索和深度优先搜索
  12. 【甄选靶场】Vulnhub百个项目渗透——项目十:stapler-1(文件上传,多方式提权)
  13. 2021年茶艺师(初级)新版试题及茶艺师(初级)考试总结
  14. sap采购申请自动转采购订单
  15. 完美解决 w10 设置 个性化 wifi 无法打开的问题
  16. LibreOJ10155 数字变换 ------ 树形dp
  17. tc275的flash
  18. 荒岛求生html5母狼攻,荒岛求生各资源作用及获取方法解析 荒岛求生资源怎么获得...
  19. 【原创】面向企业应用的平台框架的思考
  20. 大数据:Hive - ORC 文件存储格式

热门文章

  1. java计算机毕业设计学校食堂库存在线管理源码+系统+数据库+lw文档
  2. 软件测试工程师【人事面】切勿大意失荆州!
  3. DSP:C54x定时器及使用定时器产生led的1s周期闪烁
  4. 【Electron Playground】Electron 窗口问题汇总
  5. 20部商战电影,电影中的商学院
  6. 字节加码物流,抖音现电商野望
  7. 数据库课程设计-图书馆管理系统(3. 用户软件,基于QT)
  8. 番茄花园 Ghost XP SP3 2013 电脑城极速装机版
  9. 微软推出Surface以旧换新计划 最高可抵650美元
  10. 云计算与大数据第11章 大数据隐私保护习题带答案