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.全部初始化 ...
随机推荐
- Windows下Lua+Redis 断点调试环境搭建==Linux下类似
Lua+Redis 断点调试环境搭建 windows环境,使用Redis,写lua脚本头疼的问题之一不能对脚本断点调试,google加上自己的摸索,终于搞定. 1.下载ZeroBraneStudio, ...
- 【CSS】Intermediate2:Grouping and Nesting
1.Grouping 2.Nesting If the CSS is structured well, there shouldn’t be a need to use many class or I ...
- Html笔记(十)XHTML XML
XHTML 是可扩展的超文本标记语言(Extensible HyperText Markup Language). XHTML 是 w3c 组织在2000年的时候为了增强HTML推出的,本来是想替代H ...
- 创建二叉树,C语言实现
一.前序遍历创建二叉树,使用递归,头文件 BiTree.h /*槽点一:创建树时用scanf输入不成功*/ #ifndef BITREE_H #define BITREE_H #include< ...
- A Tour of Go Basic types
Go's basic types are bool string int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr ...
- PHP 判断用户是否手机访问
$agent = check_wap(); if( $agent ) { header('Location: http://www.lewanau.com'); exit; } // check if ...
- 以管理员身份启动ClickOnce部署的应用程序
ClickOnce方式部署应用简单方便,估计很多人都用过,但这种方式存在一定的“缺陷”,即以管理员方式启动应用的问题,虽然出于安全考虑可以理解,但给需要管理员权限才能正常运行的程序带来了一定的麻烦,这 ...
- java反射与代理模式
流程age: 饭前洗手----> 吃饭 --->饭后洗碗 //吃饭 public interface Dinner { //吃饭方法 public void haveDinner(); } ...
- 统一建模语言(UML) 版本 2.0
原文: http://www.ibm.com/developerworks/cn/rational/321_uml/ 简介 参考 UML 基础系列的其他文章和教程 UML基础: 统一建模语言简介 UM ...
- [Whole Web] [AngularJS] Localize your AngularJS Application with angular-localization
It is best to start your application's localization efforts early in development, even if you only s ...