C语言中memset函数详解
2016-02-26 22:35
886 查看
因为memset是以字节为单位就是对array指向的内存的4个字节进行赋值,字节,合一起就是
就等于16843009,就完成了对一个INT元素的赋值了。
所以用memset对非字符型数组赋初值是不可取的!除非赋值是0.
功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,
块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作
用 法: void *memset(void *s, char ch, unsigned n);
程序例:
#include <string.h>
#include <stdio.h>
#include <memory.h>
int main(void)
{
char buffer[] = "Hello world/n";
printf("Buffer before memset: %s/n", buffer);
memset(buffer, '*', strlen(buffer) );
printf("Buffer after memset: %s/n", buffer);
return 0;
}
输出结果:
Buffer before memset: Hello world
Buffer after memset: ***********
如果是初始化,只要定义第一个元素为0,后面就全为0了,如
int a[SIZE] = {0};
如果是在定义以后想全部赋为0,用memset()函数是比较快的。
如:
int a[SIZE];
memset(a, 0, sizeof(int)*SIZE);
补充:某人的一点心得
memset可以方便的清空一个结构类型的变量或数组。
如:
struct sample_struct
{
char csName[16];
int iSeq;
int iType;
};
对于变量
struct sample_strcut stTest;
一般情况下,清空stTest的方法:
stTest.csName[0]='/0';
stTest.iSeq=0;
stTest.iType=0;
用memset就非常方便:
memset(&stTest,0,sizeof(struct sample_struct));
如果是数组:
struct sample_struct TEST[10];
则
memset(TEST,0,sizeof(struct sample_struct)*10);
所以用memset对非字符型数组赋初值是不可取的!除非赋值是0.
功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,
块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作
用 法: void *memset(void *s, char ch, unsigned n);
程序例:
#include <string.h>
#include <stdio.h>
#include <memory.h>
int main(void)
{
char buffer[] = "Hello world/n";
printf("Buffer before memset: %s/n", buffer);
memset(buffer, '*', strlen(buffer) );
printf("Buffer after memset: %s/n", buffer);
return 0;
}
输出结果:
Buffer before memset: Hello world
Buffer after memset: ***********
如果是初始化,只要定义第一个元素为0,后面就全为0了,如
int a[SIZE] = {0};
如果是在定义以后想全部赋为0,用memset()函数是比较快的。
如:
int a[SIZE];
memset(a, 0, sizeof(int)*SIZE);
补充:某人的一点心得
memset可以方便的清空一个结构类型的变量或数组。
如:
struct sample_struct
{
char csName[16];
int iSeq;
int iType;
};
对于变量
struct sample_strcut stTest;
一般情况下,清空stTest的方法:
stTest.csName[0]='/0';
stTest.iSeq=0;
stTest.iType=0;
用memset就非常方便:
memset(&stTest,0,sizeof(struct sample_struct));
如果是数组:
struct sample_struct TEST[10];
则
memset(TEST,0,sizeof(struct sample_struct)*10);
相关文章推荐
- C++中explicit关键字的作用
- C++栈的初始化,入栈,出栈,获取栈顶元素等操作
- C 和 C++ 混合编程
- C++: string 中find函数的用法以及string::npos的含义
- C语言宏定义和宏定义函数
- C++实现普通队列,循环队列的基本操作(初始化,入队,出队,获取队列首元素等)
- 1065. A+B and C (64bit) (20)
- 线性表—顺序存储(C语言)
- C\C++中内存分几个区
- 数字图像处理-编程实现染色体计数 C语言实现
- C语言学习笔记7-字符串
- C++中的浅拷贝和深拷贝
- C语言学习笔记6-数组
- 【C/C++学院】0901-设计模式的汇总演练
- 本科教育忽略的黄金C++<7> 无序容器
- 1064. Complete Binary Search Tree (30)
- UVa 202, Repeating Decimals
- 最基本的‘*’号图形打印---菱形
- UVa 232, Crossword Answers
- c语言:英尺和米之间的转化