| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3521 人关注过本帖
标题:多维数组初始化时缺省值是零还是空? 是空的话是不是内存中用00000000填充? ...
只看楼主 加入收藏
arccosasina
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-9-12
结帖率:0
收藏
已结贴  问题点数:1 回复次数:7 
多维数组初始化时缺省值是零还是空? 是空的话是不是内存中用00000000填充?
  多谢啦!
搜索更多相关主题的帖子: 多维 缺省值 内存 
2009-09-17 22:40
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
多维数组初始化时缺省值都为0,内存中当然都是0

努力—前进—变老—退休—入土
2009-09-17 23:07
prankmoon
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:161
专家分:921
注 册:2009-7-21
收藏
得分:0 
以下是我在VC6 + Debug/Release方式的代码和输出:
程序代码:
#include <stdio.h> 
#include <stdlib.h> 
 
int init_array_test() 
{ 
    int arr[3][3]; 
    int i, j; 
     
    for (i=0; i<3; i++) 
    { 
        for (j=0; j<3; j++) 
        { 
            printf("%08X\n", arr[i][j]); 
        } 
    } 
     
    return 0; 
} 
 
int main(void) 
{ 
    init_array_test(); 
     
    return 0; 
} 

                                                  .
1. Debug方式的某次输出:
CCCCCCCC
CCCCCCCC
CCCCCCCC
CCCCCCCC
CCCCCCCC
CCCCCCCC
CCCCCCCC
CCCCCCCC
CCCCCCCC
                                                  .
2. Release方式的某次输出:
00000800
00241FE4
00000014
0012FFC0
00401B01
00000800
00000004
0012F7BC
00401BBC

结论:
1. 如果不显式初始化,也没有通过别的途径来设置数组的值,而仅仅只是定义之,那么它在内存中的初始值是垃圾数据。
2. 可以这样显式地初始化为0:
int arr[3][3] = {0};

[ 本帖最后由 prankmoon 于 2009-9-18 00:49 编辑 ]
2009-09-18 00:45
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
变量未初始化时一般是内存中的一些混乱数据,所以都提倡在变量定义后初始化数据

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2009-09-18 07:44
atom_09
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:92
专家分:141
注 册:2009-8-24
收藏
得分:0 
变量未初始化的话 不是是给默认为0也不是空
而是分配给你的内存中的原来的内容 不一定是什么
2009-09-18 09:22
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1687
专家分:4253
注 册:2007-12-27
收藏
得分:0 
好好学习一下变量作用域和存储类型那一块

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2009-09-18 12:04
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
数组未初始化的话,内存并不是都将其填充为零,应该说是一些随机的数,当你给数组赋值时,你的赋值便替换了原有的随机数。所以在数组未初始化时,将数组按照默认数输出时,每次都会有不同的结果。
2009-09-18 13:58
chenaiyuxue
Rank: 5Rank: 5
来 自:山东滨州
等 级:职业侠客
帖 子:334
专家分:370
注 册:2008-5-20
收藏
得分:0 
应该是分配给数组的内存中原有的内容,只要在程序中稍加修改初始化一下就可以了a[3][3] = {{0}};

你是雪,我是尘埃,相遇是意外;你坠落,在我胸怀,流进我血脉。
2009-09-18 15:33
快速回复:多维数组初始化时缺省值是零还是空? 是空的话是不是内存中用00000000 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014738 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved