2024年6月9日发(作者:)
C语言中使用memset的注意事项
2007-08-10 09:31
memset为内存填充函数,包含在
其原型为
void *memset(void *s, int v, size_t n);
英文释义如下:
Copies the value v (converted to type unsigned char) to the first n bytes pointed to by s; returns s.
这里s可以是数组名,也可以是指向某一内在空间的指针;v为要填充的值;n为要填充的字
节数,通常为sizeof(s);
使用memset时要注意的是,memset是逐字节进行填充,所以s一般为char *型。对于其它类
型的s,可以填充的值有两个,0和-1。这是因为计算机中用二进制补码表示数字,0和二进制
补码为全0,-1的二进制补码为全1。如果要初始化为其它的值,可以用一个for循环,如下:
for (int i=0; i { s[i] = v; } ////////////////////////////////// memset函数的用法: 将已开辟内存空间 s 的首 n 个字节的值设为值 c 下面是一个例子 #include #include main(){ char *s="Golden Global View"; clrscr(); memset(s,'G',6); printf("%s",s); getchar(); return 0; } memset() 函数常用于内存空间初始化。如: char str[100]; memset(str,0,100); memset用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’ 或‘0’;例:char a[100];memset(a, '0', sizeof(a)); memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度; 例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),会造成b的内存地址溢出。 strcpy就只能拷贝字符串了,它遇到'0'就结束拷贝;例:char a[100],b[50];strcpy(a,b);如用 strcpy(b,a),要注意a中的字符串长度(第一个‘0’之前)是否超过50位,如超过,则会造成b 的内存地址溢出。 #include #include using namespace std; int main() { char a[5]; memset(a,'1',5); for(int i = 0;i < 5;i++)
发布者:admin,转转请注明出处:http://www.yc00.com/news/1717923468a2745432.html
评论列表(0条)