C语言中,memset函数都可以给啥类型的数组清零?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中,memset函数都可以给啥类型的数组清零?相关的知识,希望对你有一定的参考价值。

我只知道可以给char型的清零:
char str[1000];
memset(str,0,1000);

函数原型:void *memset(void *s, int c, size_t n);   
函数解释:将s中前n个字节替换为ch并返回s;   
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。追问

不是,我就想问下,memset可以处理的数组类型,是不是除了字符型,整型、浮点型的都可以用啊?谢了

追答

可以用!

参考资料:http://baike.baidu.com/view/982208.htm

参考技术A 任何类型的数组都可以,实际上memset函数是对某一个地址以及该地址之后的一串空间进行赋值操作,只要是地址值,都可以被赋值。  
1、memset是计算机中C/C++语言函数。将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 第二个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针。
2、函数介绍:void *memset(void *s, int ch, size_t n);
函数解释:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。

在JAVA中有没有象C语言里的memset函数

有类似于C中的memcpy 函数的东西, System.arraycopy(Object src, int src_position, Object dst, int dst_position, int length)。
如果是要设成缺省值如0,则java 中新开的数组本来就会全部初始化成缺省值的,主类型初始化为0,对象类型初始化为null,不用显示再去初始化了。
参考技术A 包含在 <string.h>头文件中

memset为内存填充函数,可以用它对一片内存空间进行初始化, 它可以一字节一字节地把整个数组设置为一个指定的值
其原型为
void *memset(void *s, int v, size_t n);
这里s可以是数组名,也可以是指向某一内在空间的指针;
v为要填充的值;
n为要填充的字节数,通常为sizeof(s);
使用memset时要注意的是,memset是逐字节进行填充,所以s一般为char *型。本回答被提问者采纳

以上是关于C语言中,memset函数都可以给啥类型的数组清零?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中,使用一个结构体之前,要用memset把各个位清零???

零基础学C语言内存知识总结:memset函数和calloc函数

c语言中怎么把一维数组初始化为全零啊,不用循环

怎么用memset清空字符数组?

怎么用memset清空字符数组?

在JAVA中有没有象C语言里的memset函数