数组初始化的时候常用for()循环,不过如果考虑效率的话,最好用memset(),下面简单介绍以下memset()。
函数原型:
void *memset(void *s, int ch, size_t n)
函数解释:将s中前n个字节替换为ch并返回s;
memset:它包含在<memory.h>或者<string.h>中。作用是在一段内存块中填充某个给定的值,它的操作对象为单个字节,是对较大的结构体或数组进行清零操作的一种最快方法。
提到memset()就不得不提到sizeof(),因为sizeof()使用不好可能给memset()带来很隐蔽的错误:
int some_func(struct something *a){
…
…
memset(a, 0, sizeof(a));
…
}
上面这段代码是不能达到对a[]清零的目的的,因为
some_func()函数的参数已退化为指针,而不是数组对象,因此这里的sizeof(a)在32位机器上返回的应该是4,而不是a[]数组的长度(所占字节数)。
sizeof是C/C++中的一个操作符(operator),而不是函数,其作用就是返回一个具有明确类型的对象或者类型所占的内存字节数。
它有以下特点:
1.它在程序编译时被执行
2.它的操作对象可以是某个对象,或者某种类型
3.当适用于一个变量时, sizeof 返回实际的大小,当适用于静态的空间数组, sizeof 返回全部数组的尺寸。
看完百科上关于sizeof()的介绍,心中顿时产生了一堆问号,真是学的越深入,不懂得越多啊╮(╯﹏╰)╭
以上内容均来自百度百科,感谢默默编辑词条的大神们。
详情参阅:
http://baike.baidu.com/view/982208.htmhttp://baike.baidu.com/view/1078660.htm
posted on 2012-08-07 23:38
小鼠标 阅读(3174)
评论(2) 编辑 收藏 引用 所属分类:
C语言