第一种初始化方式:

#include <stdio.h>

int main()
{
int numbers[5]={12,14};
for (int i=0; i<5; i++) {
printf("numbers[%d]=%d\n",i,numbers[i]);
} return 0;
}

结果为:

numbers[0]=12
numbers[1]=14
numbers[2]=0
numbers[3]=0
numbers[4]=0

可见除指定赋值的元素外,其他数组元素均被自动初始化为0。

第二种初始化方式:

#include <stdio.h>

int main()
{
int numbers[5]; numbers[0]=12;
numbers[1]=14;
for (int i=0; i<5; i++) {
printf("numbers[%d]=%d\n",i,numbers[i]);
}
return 0; }

结果为:

numbers[0]=12
numbers[1]=14
numbers[2]=0
numbers[3]=0
numbers[4]=1450327064

明显看出number[4]的值并没有初始化为0,为number[4]所指向内存中的原数值,为不确定数字!

第三种初始化方式:

#include <stdio.h>

int main()
{
int count=5; int numbers[count]; numbers[0]=12;
numbers[1]=14;
for (int i=; i<count; i++) {
printf("numbers[%d]=%d\n",i,numbers[i]);
} return ;
}

结果为:

numbers[]=
numbers[]=
numbers[2]=1610543688
numbers[3]=32767
numbers[4]=1371647032

明显可见numbers[2],numbers[3],number[4]的值均不为0,为其指向内存中原有的数值,为不确定数字。

综上所述,c语言中,数组初始化时,不要依靠数组应默认被初始化为0来进行逻辑判断或逻辑运算,因为这样的结果具有很大的不确定性。

其实,严格来说,任何变量都不应该依靠系统默认初始化值来进行逻辑判断或逻辑运算,即使在比较高级的java,c#等语言中亦是如此,哪怕该语言API已经说明其变量默认初始化值为多少。

c语言数组不同初始化方式的结果的更多相关文章

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

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

  2. C语言数组内存初始化

    内存初始化当然有必然,但是不用memset,直接这样写就可以了:char* szRemoteFile = new char[MAX_LENGTH](); http://blog.csdn.net/pa ...

  3. c语言数组的初始化

    #include "stdio.h" int main() { ][]; a[][]="1,2,3,4,5,6,7,8,9,10,11,12"; ]=a,*p= ...

  4. Go语言 - 数组 | 多维数组

    Array 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化. 1.数组 在定义阶段,长度和类型就固定了,以后不能更改 2.长度也是数组 ...

  5. Java 代码学习之数组的初始化

    我们都很熟悉Java中的数组,它具有查询快,增删慢的特点.但是通常我们自认为很了解它的用法,却容易忽略一些小细节.今天通过一段代码来简单了解数组初始化中的一些我们容易忽略的地方. package da ...

  6. c语言数组初始化问题

    2147483648字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. charstr[10]={'I','','a','m','',‘h’,'a','p','p','y'}; 即把10 ...

  7. C语言 数组初始化的三种常用方法({0}, memset, for循环赋值)以及原理

    C语言中,数组初始化的方式主要有三种: 1.声明时,使用 {0} 初始化: 2.使用memset: 3.用for循环赋值. 那么,这三种方法的原理以及效率如何呢? 请看下面的测试代码: #define ...

  8. c语言字符数组的初始化问题

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

  9. go语言基础之数组的初始化

    1.数组的初始化 示例: package main //必须有个main包 import "fmt" func main() { //声明定义同时赋值,叫初始化 //1.全部初始化 ...

随机推荐

  1. 【原】Spark on YARN

    在YARN上运行Spark 在Spark0.6.0版本开始支持YARN模式,随后的版本在逐渐地完善. 在YARN上启动Spark 确保HADOOP_CONF_DIR或YARN_CONF_DIR属性的值 ...

  2. 【HTML】Beginner6:Link

    1.Link HTML wich basically means a system of linked text     link to another HTML file or any file a ...

  3. Oracle的dmp文件的导入

    项目开始拿到了dmp文件,数据库用的是10g的,但是尽然没导成功,后来想可能导出的时候用11导出的,决定试一下. 正好自己的机器是11的客户端,结果不识别imp命令,到安装目录下的bin文件夹下看尽然 ...

  4. 单调栈 二 nyOj 最大矩形和

    主要思想来自 http://blog.csdn.net/wuyanyi/article/details/7243580 题目的连接,头次提交的同学需要注册 http://acm.nyist.net/J ...

  5. oracle rac logminer有限制用法及session_info为unknown情况

    这里只记录下有条件的情况如何使用 BEGIN dbms_logmnr.start_logmnr( dictfilename => '/u01/arch/logminer_dict.ora',   ...

  6. Centos添加硬盘分区、挂载磁盘

    默认一个硬盘,新增硬盘识别为sdb.sdbc一次类推 1.查看磁盘信息 >fdisk -l #新磁盘为/dev/sdb,截图是已经分区完成了. 2.进入分区界面 >fdisk /dev/s ...

  7. 使用ndk standalone工具链来编译某个平台下的库

    地址: http://www.kandroid.org/ndk/docs/STANDALONE-TOOLCHAIN.html It is now possible to use the toolcha ...

  8. linux和MAC下静态库.a文件合并

    这两天开发群了讨论了一个文体,如何合并众多的.a文件. 有人给了建议,使用ar 解.a,生成.o.然后合并所有的.o文件. 我在MAC OS下尝试了一下. 正好赶上编译了ffmpeg的IOS armv ...

  9. python学习(3)

    Python学习(3)切片(Slice):根据索引范围取出字符串里面的内容,比如: l=range(100)   l[:8] [0, 1, 2, 3, 4, 5, 6, 7]              ...

  10. JAVA自动生成正则表达式工具类

    经过很久的努力,终于完成了JAVA自动生成正则表达式工具类.还记得之前需要正则,老是从网上找吗?找了想修改也不会修改.现在不用再为此烦恼了,使用此生成类轻松搞定所有正则表达式.赶快在同事面前炫一下吧. ...