#include<iostream>
using std::cout;
using std::endl;
int arr1[5];
int arr2[5] = {1,3,5};
int main()
{
int arr3[5];
int arr4[5] = {2,4,6};
int *pi1 = new int[5];
int *pi2 = new int[5]();
for(int i = 0; i != 5; i++)
   cout << arr1[i] << " ";
   cout << endl;
for(int i = 0; i != 5; i++)
   cout << arr2[i] << " ";
   cout << endl;
for(int i = 0; i != 5; i++)
   cout << arr3[i] << " ";
   cout << endl;
for(int i = 0; i != 5; i++)
   cout << arr4[i] << " ";
   cout << endl;
for(int i = 0; i != 5; i++)
   cout << *(pi1 + i) << " ";
   cout << endl;
for(int i = 0; i != 5; i++)
   cout << *(pi2 + i) << " ";
   cout << endl;
return 0;
}

Windows XP SP3下 Visual Studio 2005 编译执行的结果:

Windows XP SP3下eclipse + CDT + MinGW 编译执行的结果:

Ubuntu Linux 8.04下eclipse + CDT + g++ 编译执行的结果:

由以上的三组结果中前四个数组的初始化结果是同样的,可得到下面结论:

对于元素为内置类型的数组

arr1:静态分配、定义在函数体外、未使用初始化列表显式初始化,元素都初始化为0;

arr2:静态分配、定义在函数体外、初始化列表中未提供初值的元素初始化为0;

arr3:静态分配、定义在函数体内、未使用初始化列表显式初始化,不正确元素进行初始化;

arr4:静态分配、定义在函数体内、初始化列表中未提供初值的元素初始化为0;

三组结果中的后两个数组初始化的结果似乎是依赖于编译器的,而MinGW与g++的结果竟然还不同(MinGW的结果也太诡异了)。当中第一组(MS编译器)初始化数组的结果和C++ Primer(第四版)中讲到的动态分配的数组初始化规则是一致的,即动态分配数组时,假设数组元素是内置类型,则无初始化,如pi1。也可使用跟在数组长度后面的一对空圆括号,对数组元素做值初始化,如pi2。

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

  1. JS中数组初始化以及赋值

    .指定长度,然后初始化 ); ;index < ;index++){ vArray[index] = index; } 2.不指定长度,然后初始化 var vArray = new Array( ...

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

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

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

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

  4. 关于C/C++中数组元素的初始化

      1.一维数组初始化 对于一维数组,其初始化有一个错误的观点是:一直以为 int a[256]={0};是把a的所有元素初始化为0,int a[256]={1};是把a所有的元素初始化为1. 数组可 ...

  5. Java中数组的初始化方式

    Java中数组的初始化方式    初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组 ...

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

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

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

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

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

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

  9. c语言中数组相关问题

    c语言中数组相关问题: 1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组 ...

随机推荐

  1. php正则表达式总结

    <?php echo 'wj'; echo '<br>'; $file = '<td>移动150卡</td><!--<td></td& ...

  2. ViewPager Indicator的使用方法

    原文:http://my.oschina.net/u/1403288/blog/208402 项目源码:https://github.com/wangjing0311/ViewPagerIndicat ...

  3. 如何给report自定义page number

    问题描述: report在设置分页后会自动分页,但是有默认的page number,现在的问题是有时default page number不能满足我们的需求,此时就需要自定义page number. ...

  4. 高放的c++学习笔记之类

    类的基本思想是数据抽象和封装1.this 成员函数通过一个名为this的额外隐式参数来访问调用它的对象,当我们调用一个函数的时候,用请求该函数的对象的初始化this. 如果某个类的名字为sale,某个 ...

  5. 洛谷 P1316 丢瓶盖

    P1316 丢瓶盖 题目描述 陶陶是个贪玩的孩子,他在地上丢了A个瓶盖,为了简化问题,我们可以当作这A个瓶盖丢在一条直线上,现在他想从这些瓶盖里找出B个,使得距离最近的2个距离最大,他想知道,最大可以 ...

  6. 解决animate动画连续播放bug

    在animate动画中,如果几个div之间频繁切换,会导致鼠标移开后,动画仍在继续,解决方法有两个 一个,判断当前是否在运行动画: if(!$(".block").is(" ...

  7. phpcms v9开源开发框架基础mvc解读

    根据对mvc的了解 简要写个mvc框架 也谈不上框架 希望对新手有帮助 简单的解析下mvc  你可以这样了解 m模型也就是数据库操作 v视图  c控制器 通过url来判断调用m和v来完成请求,本身没数 ...

  8. IIS下图片防盗连设置详解

    小站只有100个IIS,盗链后经常是连主页都打不开,就想着弄个图片防盗链,在网上找了一下资料,正则表达式的写法啊,ISAPI_REWRITE基本配置啊等等,找来啃了一天终于发现有三个方法实现. 第一. ...

  9. wamp目录索引图片不显示

    在wampserver安装目录下  \bin\apache\Apache2.2.21\conf\extra\httpd-autoindex.conf Alias /icons/ "c:/Ap ...

  10. C#中的枚举器(转)

    术语表 Iterator:枚举器(迭代器) 如果你正在创建一个表现和行为都类似于集合的类,允许类的用户使用foreach语句对集合中的成员进行枚举将会是很方便的.这在C# 2.0中比 C# 1.1更容 ...