深入掌握数组定义与初始化
关于这一部分呢,看似很简单,实际运用起来却会有很多问题,课本上讲了,又没有完全讲清楚。 在运用数组的这个方法处理问题是十分灵活的,非常容易产生一些小错误导致代码不能正确运行。所以在本篇博客我将会对众多小细节加以解释,区分,同时也会举一些巧妙的实际运用。
在本片文章中数组主要为一维数组,从整型和字符型数组两方面讨论。
目录
整型数组
字符型数组
应用
整型数组
先看一下几种定义数组的方式
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,写得很仔细,希望能对大家有一些帮助。
深入掌握数组定义与初始化相关推荐
- C++中数组定义及初始化
一.一维数组 静态 int array[100]; 定义了数组array,并未对数组进行初始化 静态 int array[100] = {1,2}: 定义并初始化了数组array 动态 int* ar ...
- js二维数组定义和初始化的三种方法
方法一:直接定义并且初始化,这种遇到数量少的情况可以用 var _TheArray = [["0-1","0-2"],["1-1",&quo ...
- c++二维数组定义与初始化
int a[ ][ ]定义二维数组,静态申请 // 定义的二维数组如果不手动初始化的话,全局变量会被初始化为0,否则会随机初始化 int a[5]; // 定义一维数组 int a[2][3]; // ...
- verilog中数组的定义_verilog数组定义及其初始化
这里的内存模型指的是内存的行为模型.Verilog中提供了两维数组来帮助我们建立内存的行为模型.具体来说,就是可以将内存宣称为一个reg类型的数组,这个数组中的任何一个单元都可以通过一个下标去访问.这 ...
- c数组(结构体数组)定义与初始化
c数组定义与初始化 int array[100];//长度100; int array[100] = {1,2,3,4,5,5,6}//定义时进行初始化 int * a =0 ;//a指向int数据 ...
- 指针与数组的关系---初始化
指针与数组的关系 一维数组的长度 数组不定义长度初始化 #include<stdio.h>int main(){int a[]={12,34,65,9};int *p;printf(&qu ...
- php一维数组的定义,PHP 数组定义、遍历的实现方法
前言:接下来介绍的PHP学习笔记之数组的定义.遍历,希望对您有帮助.那么下面我们一起看看,具体内容所述如下: php中数组是一个特殊的数据类型,可以说是对象也可说是存储器了, 他里面可以存储php中其 ...
- Go 学习笔记(10)— 数组定义、数组声明、数组初始化、访问数组、数组相等、向函数传递数组
1. 数组定义 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 2. 声明数组 Go 语言数组声明需要指定元素类型及元素个数,语 ...
- Java04-day04【IDEA(概述、启动配置、项目结构、内容辅助键、快捷键、模块操作)、数组(定义详解、动态初始化、访问)、内存分配、数组内存图】
java零基础入门到精通(2019版)[黑马程序员] 视频+资料:[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] &qu ...
最新文章
- css 一侧是三角形的矩形_5种具有CSS形状和滤镜的精美图像效果
- 数字信号处理基础知识之DFT、DTFT、DFS、FFT基本概念扫盲
- 企业实战_10_Mycat集成ZK实现配置同步
- 学.net还是php,ASP.NET和php哪个更容易学
- hive解绑邮箱_django使用QQ企业邮箱发送邮件
- 语言生日创意代码_BlenderOSL代码编程
- 字母串按照字典序排序
- 解决安卓4.4webview的兼容性问题
- centos7 安装sogou输入法
- 东芝Toshiba e-STUDIO245 一体机驱动
- 广度优先搜索和深度优先搜索
- 【甄选靶场】Vulnhub百个项目渗透——项目十:stapler-1(文件上传,多方式提权)
- 2021年茶艺师(初级)新版试题及茶艺师(初级)考试总结
- sap采购申请自动转采购订单
- 完美解决 w10 设置 个性化 wifi 无法打开的问题
- LibreOJ10155 数字变换 ------ 树形dp
- tc275的flash
- 荒岛求生html5母狼攻,荒岛求生各资源作用及获取方法解析 荒岛求生资源怎么获得...
- 【原创】面向企业应用的平台框架的思考
- 大数据:Hive - ORC 文件存储格式
热门文章
- java计算机毕业设计学校食堂库存在线管理源码+系统+数据库+lw文档
- 软件测试工程师【人事面】切勿大意失荆州!
- DSP:C54x定时器及使用定时器产生led的1s周期闪烁
- 【Electron Playground】Electron 窗口问题汇总
- 20部商战电影,电影中的商学院
- 字节加码物流,抖音现电商野望
- 数据库课程设计-图书馆管理系统(3. 用户软件,基于QT)
- 番茄花园 Ghost XP SP3 2013 电脑城极速装机版
- 微软推出Surface以旧换新计划 最高可抵650美元
- 云计算与大数据第11章 大数据隐私保护习题带答案