关于数组清空的几种方法

关于数组清空的几种方法

一、使用bzero()函数

这是一个相对古老的方法,在men手册中是这样解释的:此函数已弃用,在新的程序中删除了bzero的规范。

这就说明在现在的代码中使用这个函数可能会无法正常使用甚至被编译器报错。

所以这个函数尽量少用!!!

NAMEbzero - write zero-valued bytesSYNOPSIS#include 		//在使用的时候一定得加上头文件void bzero(void *s, size_t n);//形式参数列表DESCRIPTIONThe  bzero()  function sets the first n bytes of the area starting at s to zero (bytes con‐taining '\0').RETURN VALUENone.

二、使用for循环给每一个元素赋值为0

for (int i = 0; i < count; i++)
{arr[i]='0';
}

三、使用memset()函数

在们手册中关于memset()的介绍是这样的:

NAMEmemset - fill memory with a constant byteSYNOPSIS#include 		//在使用的时候需要加上头文件void *memset(void *s, int c, size_t n);//形参列表
//将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int 型。s 是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。
DESCRIPTIONThe  memset()  function fills the first n bytes of the memory area pointed to by s with theconstant byte c.		//函数的作用是:将s指向的内存区域的前n个字节填充为常量字节c。RETURN VALUEThe memset() function returns a pointer to the memory area s.	//函数的作用是:返回一个指向内存区域s的指针。

memset() 函数可以说是初始化内存的“万能函数”,通常为新申请的内存进行初始化工作。它是直接操作内存空间,mem即“内存”(memory)的意思。

memset 一般使用“0”初始化内存单元,而且通常是给数组或结构体进行初始化。一般的变量如 char、int、float、double 等类型的变量直接初始化即可,没有必要用 memset。如果用 memset 的话反而显得麻烦。

当然,数组也可以直接进行初始化,但 memset 是对较大的数组或结构体进行清零初始化的最快方法,因为它是直接对内存进行操作的。memset 函数的第三个参数 n 的值一般用 sizeof() 获取,这样比较专业。

注意,如果是对指针变量所指向的内存单元进行清零初始化,那么一定要先对这个指针变量进行初始化,即一定要先让它指向某个有效的地址。而且用memset给指针变量如p所指向的内存单元进行初始化时,n 千万别写成 sizeof§,这是新手经常会犯的错误。因为 p 是指针变量,不管 p 指向什么类型的变量,sizeof§ 的值都是 4。

四、使用swab()函数

NAMEswab - swap adjacent bytesSYNOPSIS#define _XOPEN_SOURCE       /* See feature_test_macros(7) */#include 			//不要忘记加上头文件哦void swab(const void *from, void *to, ssize_t n);DESCRIPTIONThe  swab()  function copies n bytes from the array pointed to by from to the array pointedto by to, exchanging adjacent even and odd bytes.  This function is used to  exchange  databetween machines that have different low/high byte ordering.//swab()函数从from所指向的数组复制n个字节到所指向的数组To by To,//交换相邻的偶数和奇数字节。该函数用于交换数据在具有不同的低/高字节顺序的机器之间。This  function does nothing when n is negative.  When n is positive and odd, it handles n-1bytes as above, and does something unspecified with the last  byte.   (In  other  words,  nshould be even.)//当n为负时,这个函数什么都不做。当n为正且为奇数时,它处理n-1//字节,并对最后一个字节执行一些未指定的操作。(换句话说,n应该是偶数。)RETURN VALUEThe swab() function returns no value.	//没有任何返回值·

笔者个人比较推荐使用memset()函数,因为一般来说我们代码中涉及到字符串的时候,都会加上 #include 头文件,我们在使用这个函数的时候就不容易出现遗忘添加头文件的情况。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部