memset

ttlb 2003-08-20 02:54:01
请问什么时候需要memset?
再C++Primer第六章TextQuery类中构造函数如下:
TextQuery::TextQuery(){memset( this, 0, sizeof( TextQuery ));}
这里的为什么要调用memset?有什么用?
...全文
261 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttlb 2003-08-20
  • 打赏
  • 举报
回复
up
ttlb 2003-08-20
  • 打赏
  • 举报
回复
up
httruly 2003-08-20
  • 打赏
  • 举报
回复
如果在一个结构体中,有一个指针,而用
memset( buffer, 0x00, sizeof(buffer) )初始化后,
这个指针的值是0吗?
(我测试的结果却不是0)
grail0922 2003-08-20
  • 打赏
  • 举报
回复
函数原型是:
void *memset( void *dest, int c, size_t count );

#include <memory.h>
#include <stdio.h>

void main( void )
{
char buffer[] = "This is a test of the memset function";

printf( "Before: %s\n", buffer );
memset( buffer, '*', 4 );
printf( "After: %s\n", buffer );
}


Output

Before: This is a test of the memset function
After: **** is a test of the memset func
aflyinghorse 2003-08-20
  • 打赏
  • 举报
回复
memset( this, 0, sizeof( TextQuery ))
把TextQuery 类的对象所占的内存空间全部置为0

oo() 说的很准确,给类不能有虚函数,即必须为非多态类
jack_wq 2003-08-20
  • 打赏
  • 举报
回复
楼上的解释正确,如果ch的值是0那么就是将一段内存空间置零,参数是指字节数
jack_wq 2003-08-20
  • 打赏
  • 举报
回复
楼上的解释正确,如果ch的值是0那么就是将一段内存空间置零,参数是指字节数
pzytony 2003-08-20
  • 打赏
  • 举报
回复

函数名: memset
功 能: 设置s中的所有字节为ch, s数组的大小由n给定
用 法: void *memset(void *s, char ch, unsigned n);
程序例:

#include <string.h>
#include <stdio.h>
#include <mem.h>

int main(void)
{
char buffer[] = "Hello world\n";

printf("Buffer before memset: %s\n", buffer);
memset(buffer, '*', strlen(buffer) - 1);
printf("Buffer after memset: %s\n", buffer);
return 0;
}


oo 2003-08-20
  • 打赏
  • 举报
回复
memset速度快;
在类的构造函数里用的话:这个类不能有虚函数,他的基类也不能有,否则把VTABLE的指针给破坏了。类的成员也应该只有基本类型,如果有类的话会出问题的。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧