标题:[经验]大数组初始化的窍门
只看楼主
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
 问题点数:0 回复次数:5 
[经验]大数组初始化的窍门
今天突然发现了1个数组赋值的技巧,和大家讨论一下:
一般定义了数组都要给每个元素赋0值,我以前都是用循环做的,这样就浪费了很多语句在初始化上!
今天看了看书,发现当给数组的一部分赋值时,没赋值的元素系统会自动给0。
于是想了一个偷懒的办法,就是给第1个值赋0,这样所有元素都是0了
例如int a[10000]={0};
编程验证了一下,这样果然没有问题,而且可以在编译时就搞定初始化,不用浪费语句,嘿嘿!
不过这个方法只可以用于要初始化为0的情况!
不知大家有没有更好的方法。
搜索更多相关主题的帖子: 窍门 赋值 经验 元素 
2007-03-22 22:28
zcs302
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-3-6
得分:0 

我以前以为不初始化就自动全0呢,刚才试了一下,原来得至少先赋值一个,唉教材说得不清不楚的,郁闷........

2007-03-22 22:57
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
得分:0 
如果不初始化,那么数组中的值是内存中的随机数,是不可以用的,
如果引用一个未赋值的元素,编译器会有warning的

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-22 23:10
w362034710
Rank: 1
等 级:新手上路
帖 子:169
专家分:0
注 册:2006-12-2
得分:0 
本来就是吧,初始化的时候只需一个为零就可以了,,
2007-03-23 09:36
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
得分:0 
我也看到这样的语句可以实现这样的结果。
假设定义一个int a[10]。
memset(a,0,10*sizeof(int))
这个也行的。

~~我的明天我知道~~
2007-03-23 09:58
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
得分:0 
memset
功 能: 设置s中的所有字节为ch, s数组的大小由n给定
用 法: void *memset(void *s, char ch, unsigned n);
程序例:
#include
#include
#include
int main(void)
{
char buffer[] = "Hello world\n";
printf("Buffer before memset: %s\n", buffer); //打印数组字符
memset(buffer, '*', strlen(buffer) - 1);
printf("Buffer after memset: %s\n", buffer);
return 0;
}

雁无留踪之意,水无取影之心
2007-03-23 10:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-126020-1-1.html




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

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