c语言数组不同初始化方式的结果
第一种初始化方式:
#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语言数组不同初始化方式的结果的更多相关文章
- Java中数组的初始化方式
Java中数组的初始化方式 初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组 ...
- C语言数组内存初始化
内存初始化当然有必然,但是不用memset,直接这样写就可以了:char* szRemoteFile = new char[MAX_LENGTH](); http://blog.csdn.net/pa ...
- c语言数组的初始化
#include "stdio.h" int main() { ][]; a[][]="1,2,3,4,5,6,7,8,9,10,11,12"; ]=a,*p= ...
- Go语言 - 数组 | 多维数组
Array 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化. 1.数组 在定义阶段,长度和类型就固定了,以后不能更改 2.长度也是数组 ...
- Java 代码学习之数组的初始化
我们都很熟悉Java中的数组,它具有查询快,增删慢的特点.但是通常我们自认为很了解它的用法,却容易忽略一些小细节.今天通过一段代码来简单了解数组初始化中的一些我们容易忽略的地方. package da ...
- c语言数组初始化问题
2147483648字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. charstr[10]={'I','','a','m','',‘h’,'a','p','p','y'}; 即把10 ...
- C语言 数组初始化的三种常用方法({0}, memset, for循环赋值)以及原理
C语言中,数组初始化的方式主要有三种: 1.声明时,使用 {0} 初始化: 2.使用memset: 3.用for循环赋值. 那么,这三种方法的原理以及效率如何呢? 请看下面的测试代码: #define ...
- c语言字符数组的初始化问题
1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y ...
- go语言基础之数组的初始化
1.数组的初始化 示例: package main //必须有个main包 import "fmt" func main() { //声明定义同时赋值,叫初始化 //1.全部初始化 ...
随机推荐
- Java笔记(二十五)……其他常用API
System类 工具类全部都是静态方法 常用方法 获取系统属性信息 static PropertiesgetProperties() static StringgetProperty(String k ...
- Linux下platform设备以及platform设备和驱动注册的先后顺序
platform是Linux系统提供的一种管理设备的手段,所有SOC系统中集成的独立的外设控制器.挂接在SOC内存空间的外设等都属Platform设备.如ARM S3C6410处理器中,把内部集成的I ...
- Esper系列(七)数据缓存、外部事件应用(静态方法)
LRU Cache 功能:最近最少使用策略. 数据库查询缓存应用配置: 1 ); 12 } 13 return bean; 14 } 15 } ...
- 新花生壳内网版2.3 + Tomcat7 搭建自己的网站(2015.01.21)
网上很多资料,问题主要是出在 tomcat 的访问上而已: 如下总结一下: 首先在 花生壳 官网(http://hsk.oray.com/)注册一个帐号,每个帐号可以领取一个免费域名 然后下载安装新版 ...
- POJ3009 Curling 2.0
正式做POJ的第一题,做出来后又看了别人的代码,就又完善了一下,也通过了.参考 http://blog.sina.com.cn/s/blog_4abcd9bc0100phzb.html 改了之后觉得写 ...
- linux下编译安卓ffmpeg
本次编译属于2013年6月项目的一部分,重新修改使用. 为统一工程版本 ffmpeg版本为1.2.1 本次的目录结构为 工程目录/jni/Android.mk 工程目录/jni/Application ...
- C++ Primer 练习7.32(C++ Primer读书笔记)
第七章 类 练习7.32 定义你自己的Screen和Window_mgr,其中clear是Window_mgr的成员,是Screen的友元. 由于Window_mgr中含有Screen对象,所以在W ...
- iOS开发:UIImageView常用操作
UIImageView,顾名思义,是用来放置图片的.使用Interface Builder设计界面时,当然可以直接将控件拖进去并设置相关属性,这就不说了,这里讲的是用代码. 1.创建一个UIImage ...
- linux+nginx+tomcat负载均衡,实现session同步
linux+nginx+tomcat负载均衡,实现session同步 花了一个上午的时间研究nginx+tomcat的负载均衡测试,集群环境搭建比较顺利,但是session同步的问题折腾了几个小时才搞 ...
- 分布式助手Zookeeper(四)
分布式助手Zookeeper(四)博客分类: Zookeeper zookeeper配置同步zookeeper编程 Zookeeper是分布式环境下一个重要的组件,因为它能在分布式环境下,给我带来很多 ...