C++中数组初始化
#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++中数组初始化的更多相关文章
- JS中数组初始化以及赋值
.指定长度,然后初始化 ); ;index < ;index++){ vArray[index] = index; } 2.不指定长度,然后初始化 var vArray = new Array( ...
- Linux Kernel代码艺术——数组初始化
前几天看内核中系统调用代码,在系统调用向量表初始化中,有下面这段代码写的让我有点摸不着头脑: const sys_call_ptr_t sys_call_table[__NR_syscall_max+ ...
- Linux Kernel代码艺术——数组初始化【转】
转自:http://www.cnblogs.com/hazir/p/array_initialization.html 前几天看内核中系统调用代码,在系统调用向量表初始化中,有下面这段代码写的让我有点 ...
- 关于C/C++中数组元素的初始化
1.一维数组初始化 对于一维数组,其初始化有一个错误的观点是:一直以为 int a[256]={0};是把a的所有元素初始化为0,int a[256]={1};是把a所有的元素初始化为1. 数组可 ...
- Java中数组的初始化方式
Java中数组的初始化方式 初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组 ...
- C++中数组定义及初始化
一.一维数组 静态 int array[100]; 定义了数组array,并未对数组进行初始化 静态 int array[100] = {1,2}: 定义并初始化了数组array 动态 int* ar ...
- 【汇总】java中数组的声明、初始化及遍历
java中数组用来存储固定大小的同类型元素 一维数组: 1.数组的声明: //声明一维数组,推荐用第一种 int[] a; int b[]; 2.数据的初始化:有三种初始化方式 (1).静态初始化 / ...
- 用vector容器代替数组 ——使用数组初始化vector对象
在C++中,我们不能用数组直接初始化另一数组,而只能创建新的数组,然后显式的把原数组的元素逐个复制给新的数组. 按照C语言中的做法: const size_t arry_size=6; int int ...
- c语言中数组相关问题
c语言中数组相关问题: 1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组 ...
随机推荐
- memcache如何模糊查询
是新的方法,还是get方法本身就有这个功能? 需要用到递归遍历的方法,将所有的key-value扫描出来.
- CSS中伪类的使用
原文:http://www.cnblogs.com/guopei/archive/2011/04/16/2017627.html 何为伪类? 也就是实际实现了类的效果,但是并没有实际添加到标签中的类, ...
- CSS3 边框
说明:CSS3完全向后兼容,因此不必改变现有的设计.浏览器通常支持CSS2 CSS3模块 CSS3被划分为模块: 选择器 框模型 背景和边框 文本效果 2D/3D 转换 动画 多列布局 用户界面 CS ...
- Nginx配置文件nginx.conf详解(转)
#定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | ...
- Android NDK编程,引入第三方.so库
android自带的编译工具NDK进行编译时(非单纯的调用第三方.so而是进行ndk编程),armeabi以及armeabi-v7a文件夹下的第三方so文件将会被删除,只会产生编译后的so文件,其他的 ...
- .net 文件下载方法
public void DownLoadMethod(string FilePath) { string hzm = Path.GetExtension(FileP ...
- java的注释
最近在做java项目开始关注和注意一些java规范,目的只是为了让自己和别人更容易理解自己写的代码和复用. 一个重要的原则就是:问你自己,你如果从来没有见过这段代码,你要快速地知道这段代码是干什么的, ...
- 利用Format函数格式化时间和日期
在做机房收费系统的时候,因为需要使用到日期进行查询,所以在数据表中没有使用自动添加日期的功能,而是采用了自定义的格式插入.但由于事先没有对时间转换的格式进行统一,导致后面查询时出现的问题不断. 插入时 ...
- cocos2d-x 工程目录结构说明
下载最新的cocos2d-x,解压完之后呈现出如下的目录结构: cocos2dx:框架核心目录,里面是存放了2dx引擎的核心代码. CocosDenshion:各个平台的音效实现. document: ...
- Linux(CentOS)搭建SVN服务器全攻略
虽然在windows上搭建SVN很简单,但是效能却不高,这当然是和linux相比了.然而在linux上搭建SVN却非常繁琐,所以今天这篇文章就来一步一步教您如何在Centos上搭建SVN 安装#yum ...