[经验]大数组初始化的窍门
今天突然发现了1个数组赋值的技巧,和大家讨论一下:一般定义了数组都要给每个元素赋0值,我以前都是用循环做的,这样就浪费了很多语句在初始化上!
今天看了看书,发现当给数组的一部分赋值时,没赋值的元素系统会自动给0。
于是想了一个偷懒的办法,就是给第1个值赋0,这样所有元素都是0了
例如int a[10000]={0};
编程验证了一下,这样果然没有问题,而且可以在编译时就搞定初始化,不用浪费语句,嘿嘿!
不过这个方法只可以用于要初始化为0的情况!
不知大家有没有更好的方法。
----------------解决方案--------------------------------------------------------
我以前以为不初始化就自动全0呢,刚才试了一下,原来得至少先赋值一个,唉教材说得不清不楚的,郁闷........
----------------解决方案--------------------------------------------------------
如果不初始化,那么数组中的值是内存中的随机数,是不可以用的,
如果引用一个未赋值的元素,编译器会有warning的
----------------解决方案--------------------------------------------------------
本来就是吧,初始化的时候只需一个为零就可以了,,
----------------解决方案--------------------------------------------------------
我也看到这样的语句可以实现这样的结果。
假设定义一个int a[10]。
memset(a,0,10*sizeof(int))
这个也行的。
----------------解决方案--------------------------------------------------------
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;
}
----------------解决方案--------------------------------------------------------