浅谈C++中memset函数的用法

浅谈C++中memset函数的用法

memset函数的头文件是cstring, 实际上是一个字符串处理函数,但常用于给静态数组(不是new出来的数组)赋特定初值。

#include<cstring>

C++ Reference关于memset函数的链接页:memset - C++ Reference

在使用的时候有2点需要特别注意:

1. value虽然是以int(32 bit)类型给的,但最终是转化为了unsigned char(8 bit)

所以,可以赋的最大初值是memset(a,0x3f, sizeof(a)),相当于赋了1061109567,

memset(a, 0xff, sizeof(a))相当于赋-1,memset(a, 0, sizeof(a))相当于赋0,而想要赋初值1是没法实现的

memset(a,0x3f,sizeof(a));			// 1061109567,1061109567,1061109567,1061109567,1061109567
memset(a, 1, sizeof(a));			// 16843009,16843009,16843009,16843009,16843009 

2. 动态开辟(new)出来的数组的头指针(p)经过sizeof(sizeof(p))运算后得到只是头指针的大小而不是整个数组的大小,所以动态开辟的数组不能用memset赋初值,如果要赋初值0的话,直接new的时候后面添一个()就行了。

int* p = new int[5]();				// 0,0,0,0,0
memset(p, 1, sizeof(p));			// 16843009,0,0,0,0
delete[] p;


猜你喜欢

转载自blog.csdn.net/da_kao_la/article/details/80961007