具有初始化的数组定义,其元素个数可以省略,即方括号中的表达式可以省略。这时候,最后确定的元素个数取决于初始化值的个数。例如:

 #include<iostream>
using namespace std;
int main()
{
int a[] = {,,,,};
for (int i = ; i < sizeof(a) / sizeof(a[]); ++i)
cout << a[i] << " ";
cout << "\n";
cin.get();
return ;
}

运行结果:

程序中,用了sizeof(a),即a数组的字节数。还有sizeof(a[0]),即第一个元素所占空间的字节数,因为是整形数组,所以相当于sizeof(int),在32位编译器中整形数程度长度为4。a数组有若干个元素,每个元素有sizeof(a[0])个字节,所以两者相除就是元素个数。这样表示的用意在于可维护性。(因为数组元素个数随着编程需要可能也会变化。在稍大一点的编程中,输入过程与处理过程往往分离,即中间相隔许多语句,所以,并不能一下子直观得看到数组元素个数的值,而根据数组名和其元素的信息,获取元素个数的方式,就带有很好的通用性。for循环的结构描述就无须跟着数组的初始化变动而改动了)

数组默认值:

对于没有初始化的数组,分两种情况:一种是全局数组和静态数组,也就是在函数外部定义的,或者加上static修饰的数组定义,其元素总是全被清零:另一种是局部数组,就是在函数内部定义的数组,它们的值是不确定的。例如:

 #include<iostream>
using namespace std; int array1[] = { , , };
int array2[]; int main()
{
int array3[] = {};
int array4[]; cout << "array1: ";
for (int i = ; i < ; ++i)
cout << array1[i] << " "; cout << "\narray2: ";
for (int i = ; i < ; ++i)
cout << array2[i] << " "; cout << "\narray3: ";
for (int i = ; i < ; ++i)
cout << array3[i] << " "; cout << "\narray4: ";
for (int i = ; i < ; ++i)
cout << array4[i] << " "; cout << "\n"; cin.get();
return ;
}

数组的这种初始化规定方式源于程序运行的空间布局,函数中的局部数组是随着函数调用而创立的,而函数外部的数组是在整个程序运行中起作用的,驻于全局数据区,在运行起始时为0。

二维数组:

使用二维数组,可以按行、列下标访问对应元素。例如:

 #include<iostream>
using namespace std; int main()
{
int array1[][] = {,,,,};
int array2[][] = { { , }, {} }; cout << "array1: ";
for (int i = ; i < ; ++i)
for (int j = ; j < ; ++j)
cout << array1[i][j] << ", "; cout << "\narray2: ";
for (int i = ; i < ; ++i)
for (int j = ; j < ; ++j)
cout << array2[i][j] << ", "; cout << "\n"; cin.get();
return ;
}

C++ code:数组初始化的更多相关文章

  1. Linux Kernel代码艺术——数组初始化

    前几天看内核中系统调用代码,在系统调用向量表初始化中,有下面这段代码写的让我有点摸不着头脑: const sys_call_ptr_t sys_call_table[__NR_syscall_max+ ...

  2. Linux Kernel代码艺术——数组初始化【转】

    转自:http://www.cnblogs.com/hazir/p/array_initialization.html 前几天看内核中系统调用代码,在系统调用向量表初始化中,有下面这段代码写的让我有点 ...

  3. 从C过渡到C++——换一个视角深入数组[初始化](1)

    从C过渡到C++--换一个视角深入数组[初始化](1) 目录 从C过渡到C++--换一个视角深入数组[初始化](1) 数组的初始化 从C入手 作用域 代码块作用域 文件作用域 原型作用域 函数作用域 ...

  4. 用vector容器代替数组 ——使用数组初始化vector对象

    在C++中,我们不能用数组直接初始化另一数组,而只能创建新的数组,然后显式的把原数组的元素逐个复制给新的数组. 按照C语言中的做法: const size_t arry_size=6; int int ...

  5. java数组初始化

    java数组初始化 //静态初始化数组:方法一 String cats[] = new String[] { "Tom","Sam","Mimi&qu ...

  6. java 数组初始化

    一维数组 1)   int[] a;   //声明,没有初始化 2)   int[] a=new int[5];   //初始化为默认值,int型为0 3)   int[] a={1,2,3,4,5} ...

  7. [转]Java数组初始化详解

    一维数组1)   int[] a;   //声明,没有初始化 2)   int[] a=new int[5];   //初始化为默认值,int型为0 3)   int[] a={1,2,3,4,5}; ...

  8. C++中数组初始化

    #include<iostream>using std::cout;using std::endl;int arr1[5];int arr2[5] = {1,3,5};int main() ...

  9. 通过数组初始化链表的两种方法:指向指针的引用node *&tail和指向指针的指针(二维指针)node **tail

    面试高频题:单链表的逆置操作/链表逆序相关文章 点击打开 void init_node(node *tail,char *init_array) 这样声明函数是不正确的,函数的原意是通过数组初始化链表 ...

  10. No1_3.数组初始化_Java学习笔记

    public class HelloArray { public static void main(String[] args) { // TODO Auto-generated method stu ...

随机推荐

  1. Adobe Premiere Pro CC ------ 快捷键

    ctrl + ~:全屏 Esc:退出全屏

  2. 网络编程基础【day09】:socket编程入门(一)

    本节内容 1.OSI七层模型 2.概述 3.关系图 4.代码逻辑图 5.socket概念 一.OSI七层模型 二.概述 socket通常也称作"套接字",用于描述IP地址和端口,是 ...

  3. Linux记录-分区(df/fdisk/mount/umount/fuser)

    1.查看磁盘挂载(df -TH) 2.卸载umount /dev/vdb1 3.查杀用户进程(fuser -m -v -i -k /dev/vdb1) 4.再次卸载umount /dev/vdb1,并 ...

  4. Hive记录-加载文件进行查询操作

    Hive可以运行保存在文件里面的一条或多条的语句,只要用-f参数,一般情况下, 保存这些Hive查询语句的文件通常用.q或者.hql后缀名,但是这不是必须的, 你也可以保存你想要的后缀名.假设test ...

  5. vuex2.0源码分析

    当我们用vue在开发的过程中,经常会遇到以下问题 多个vue组件共享状态 Vue组件间的通讯 在项目不复杂的时候,我们会利用全局事件bus的方式解决,但随着复杂度的提升,用这种方式将会使得代码难以维护 ...

  6. MySQL日期时间格式化参数

    MySQL中常常会用到对日期的格式化,比如按某时间格式计算间隔,按某时间格式统计信息等等,所以整理了一下日期格式化的参数,可以根据自己的需求进行组合使用.使用例子如下: (1)SELECT DATE_ ...

  7. PHP7 学习笔记(九)phpsize动态编译openssl扩展 (微信公众平台)

    先吐槽,微信公众平台授权出问题了,尽然访问不了 一.问题描述: 使用PHP中的库函数file_get_contents时出现Unable to find the wrapper "https ...

  8. Java入门系列(十)Java IO

    概述 总体而言,java的读写操作又分为两种:字符流和字节流. 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件. 什么是流? ...

  9. javascript 回到顶部

    <script type="text/javascript"> window.onload = function(){ var timer = null; //用于判断 ...

  10. Storm 集群

    Apache Storm Storm是一个分布式的,可靠的,容错的数据流处理系统.Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt,bolt要么把数据保存到某种存 ...