如何理解memset函数的作用

wenxian8 2011-03-09 08:10:32
下面是个人编写了一道程序来理解这个函数,但是不知道 大家的理解是否也跟我个人完全一样

个人是这样理解:memset函数 三个参数:第一个为 地址,第二个为 字节值,第三个字节个数
#include<stdio.h>
#include<memory.h>
void main()
{
int a[5]; //整型数组,每个元素值都是占4个字节
memset(a,1,5*sizeof(int));//此函数是以字节为单位的,所以需要分配20个字节,每个字节值为1
int i;
for(i=0;i<5;i++)
printf("%d ",a[i]);
printf("\n");
char b[5]; //定义字符数组,如果没有初始化字符数组,而且又没有使用memset函数初始化内存,则出现乱码
memset(b,'1',5);//字节值为'1'
for(i=0;i<5;i++)
printf("%c",b[i]);
printf("\n这就是使用memset函数初始化整型数组跟字符数组的区别了\n");
}
//memset:作用是在一段内存块中填充某个给定的值 它对较大的结构体或数组进行清零操作的一种最快方法

为了集思广益,请问各位 是如何理解 这个函数的,说说你们的看法吧? 谢谢了
...全文
148 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wbruce 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pengzhixi 的回复:]
void * memset ( void * ptr, int value, size_t num );
ptr
Pointer to the block of memory to fill.
value
Value to be set. The value is passed as an int, but the function fills the block of memory……
[/Quote]

兄弟是引用哪里的资料?请提供一下,谢谢
alang512 2011-03-09
  • 打赏
  • 举报
回复
现在太多数初学者都是 接触VC++6.0的,所以int类型 当然是 4个字节。
函数原型: void *memset(void *s, int c, size_t n)
函数功能: 字符串中的n个字节内容设置为c
函数返回:
参数说明: s为要设置的字符串,c为设置的内容,n为长度,即n个字节

yanran_hill 2011-03-09
  • 打赏
  • 举报
回复
应该是memcpy与memmov的区别,比如有重叠区域时的区别
至于sizeof(int)的值,未必就是4 啊,记得有些机器,比如8086的机器,应该是2
qq120848369 2011-03-09
  • 打赏
  • 举报
回复
int是4字节的,memset是1字节的,1字节是1不代表4个字节是1。

'1'不是1,其整型值为(int)'1'。
hrx1989 2011-03-09
  • 打赏
  • 举报
回复
memcpy和strcpy的区别。。。
pengzhixi 2011-03-09
  • 打赏
  • 举报
回复
void * memset ( void * ptr, int value, size_t num );
ptr
Pointer to the block of memory to fill.
value
Value to be set. The value is passed as an int, but the function fills the block of memory using the unsigned char conversion of this value.
num
Number of bytes to be set to the value.

千杯不醉-sen 2011-03-09
  • 打赏
  • 举报
回复

NET_PACK *pPack = new NET_PACK; //结构体
memset(pPack,0,sizeof(NET_PACK));//赋值

69,369

社区成员

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

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