下面随笔给出C++数组的存储与初始化的细节内容。

数组的存储与初始化

一维数组的存储

数组元素在内存中顺次存放,它们的地址是连续的。元素间物理地址上的相邻,对应着逻辑次序上的相邻。

例如:

一维数组的初始化

在定义数组时给出数组元素的初始值。

  • 列出全部元素的初始值

例如:static int a[10]={0,1,2,3,4,5,6,7,8,9};

  • 可以只给一部分元素赋初值

例如:static int a[10]={0,1,2,3,4};

  • 在对全部数组元素赋初值时,可以不指定数组长度

例如:static int a[]={0,1,2,3,4,5,6,7,8,9}

二维数组的存储

  • 按行存放

例如: float a[3][4];

可以理解为:

其中数组a的存储顺序为:

a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23

二维数组的初始化

  • 将所有初值写在一个{}内,按顺序初始化

    • 例如:static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12

  • 分行列出二维数组元素的初值

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

  • 可以只对部分元素初始化

    • 例如:static int a[3][4]={{1},{0,6},{0,0,11}};

  • 列出全部初始值时,第1维下标个数可以省略

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

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

注意:

  • 如果不作任何初始化,内部auto型数组中会存在垃圾数据,static数组中的数据默认初始化为0;

  • 如果只对部分元素初始化,剩下的未显式初始化的元素,将自动被初始化为零;

  • 现在我们来看一个用数组存放Fibonacci数列的例子。

例: 求Fibonacci数列的前20项

 1 #include <iostream>
2
3 using namespace std;
4
5 int main() {
6
7 int f[20] = {1,1}; //初始化第0、1个数
8
9 for (int i = 2; i < 20; i++) //求第2~19个数
10
11 f[i] = f[i - 2] + f[i - 1];
12
13 for (int i=0;i<20;i++) { //输出,每行5个数
14
15 if (i % 5 == 0) cout << endl;
16
17 cout.width(12); //设置输出宽度为12
18
19 cout << f[i];
20
21 }
22
23 return 0;
24
25 }

运行结果:

例:循环从键盘读入若干组选择题答案,计算并输出每组答案的正确率,直到输入ctrl+z为止。

 1 每组连续输入5个答案,每个答案可以是'a'..'d'。
2
3 例: 一维数组应用举例
4
5 #include <iostream>
6
7 using namespace std;
8
9 int main() {
10
11 const char key[ ] = {'a','c','b','a','d'};
12
13 const int NUM_QUES = 5;
14
15 char c;
16
17 int ques = 0, numCorrect = 0;
18
19 cout << "Enter the " << NUM_QUES << " question tests:" << endl;
20
21 while(cin.get(c)) {
22
23 if(c != '\n') {
24
25 if(c == key[ques]) {
26
27 numCorrect++; cout << " ";
28
29 } else
30
31 cout<<"*";
32
33 ques++;
34
35 } else {
36
37 cout << " Score " << static_cast<float>(numCorrect)/NUM_QUES*100 << "%";
38
39 ques = 0; numCorrect = 0; cout << endl;
40
41 }
42
43 }
44
45 return 0;
46
47 }

C++数组的存储与初始化的更多相关文章

  1. C 语言字符数组的定义与初始化

    1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'} ...

  2. [zt]C++二维数组讲解、二维数组的声明和初始化

    定义: int *pia = new int[10]; // array of 10 uninitialized ints 此 new 表达式分配了一个含有 10 个 int 型元素的数组,并返回指向 ...

  3. C语言中二维字符数组的定义和初始化

    本篇日志关于二维字符数组的定义和初始化.我相信这篇文章属于菜鸟级的,高手请直接无视. 一般来说,我们可能会希望定义一个二维字符数组并且在定义的时候就用一些字符串来初始化它.比如说: ][MAX_LEN ...

  4. 各种C#数组的定义和初始化

    各种C#数组的定义和初始化2009-08-26 18:28 岁月联盟 字号:T | T一键收藏,随时查看,分享好友!本文介绍了C#数组定义和初始化,包括一维数组.交错数组和多维数组,供大家参考.AD: ...

  5. C++二维数组讲解、二维数组的声明和初始化

    我们知道,一维空间是一条线,数学中用一条数轴来表达:二维空间是一个平面,数学中用平面坐标系来表达.那么二维数组又是什么样的呢? 线与面 我们用一个下标来描述一维数组中的某个元素,就好像在用数描述一条线 ...

  6. java一维数组的声明、初始化及排序

    public class TestArray { public static void main(String[] args) { /** 数组声明及动态初始化 int a[] = new int[a ...

  7. Day_09【常用API】扩展案例1_程序中使用一个长度为3的对象数组,存储用户的登录名和密码……

    需求说明:实现用户注册.登陆功能: 1.程序中使用一个长度为3的**对象数组**,存储用户的登录名和密码: 例如如下格式: 登录名 密码 生日 爱好 zhangsan 1111 1998-03-15 ...

  8. 【汇总】java中数组的声明、初始化及遍历

    java中数组用来存储固定大小的同类型元素 一维数组: 1.数组的声明: //声明一维数组,推荐用第一种 int[] a; int b[]; 2.数据的初始化:有三种初始化方式 (1).静态初始化 / ...

  9. Java中数组的定义,初始化和使用

    定义:数组是数据类型相同的,用一个标志符名称封装在一起的一个对象序列或基本类型数据序列(一组相同数据类型元素的集合,并且分配一块连续的内存来存储). 格式:int[] a1(常用)  或者 int a ...

随机推荐

  1. 【noi 2.2_1751】分解因数(递归)

    题意:问一个给定正整数的分解因数的方式数.N=a1*a2*...*ak(a1<=a2<=...<=ak). 解法:一步步分解该数,总方式数为一个个因数被分解的方案数之和. 可用大括号 ...

  2. 【uva 11572】Unique Snowflakes(算法效率--滑动窗口,3种实现方法)

    题意:求长度为N的序列中,最长的一个无重复元素的连续子序列. 解法:[L,R]每次R++或L++延伸就可以得到答案. 实现:(1)next[],last[]--O(n): 1 #include< ...

  3. Nginx基础 - 配置缓存web服务

    1.缓存配置语法 1)proxy_cache配置语法 Syntax: proxy_cache zone | off; Default: proxy_cache off; Context: http, ...

  4. Ubuntu Live CD联网修复

    此模式下可以联网修复ubuntu系统下绝大多数问题.进入LIVE CD模式,打开终端执行以下命令: #此处/dev/sda1为ubuntu根分区,工作中根据实际分区情况更改 sudo mount /d ...

  5. 数据库之postgreSQL入门操作指南

    一.增 二.删 三.改 四.查 五.SQL操作表 1.增加列 ALTER TABLE table_name ADD column_name datatype; 2.删除一列 ALTER TABLE t ...

  6. DOM型XSS

    打开漏洞页面,随便输入点东西,发现没有啥东西. 但是我们发现我们输入的11,在面的herf 中 看到这儿就很简单了,我们只需要闭合一下,就可以构造出我们的payload了. '><img ...

  7. Ubuntu16安装chrome

    不免让您失望, 安装正常的chrome,Dependency is not satisfiable: libnss3 (>= 2:3.22)问题一直没能解决,故使用chromium次而代之. s ...

  8. npm publish bug & solution

    npm publish bug & solution npm ERR! Unexpected token < in JSON at position 0 while parsing ne ...

  9. Oh My Zsh All In One

    Oh My Zsh All In One https://ohmyz.sh/ install # CURL $ sh -c "$(curl -fsSL https://raw.github. ...

  10. 如何用 js 实现一个类似微信红包的随机算法

    如何用 js 实现一个类似微信红包的随机算法 js, 微信红包, 随机算法 "use strict"; /** * * @author xgqfrms * @license MIT ...