memset的一段语句

来源:百度知道 编辑:UC知道 时间:2024/05/21 13:10:32
#include<stdio.h>
#include<memory.h>
void main()
{
char ch;
int num[26],i;
memset(num,0,26*sizeof(int));
while ((ch=getchar())!='\n')
if (ch>='A'&&ch<='Z')
num[ch-'A']++;
for(i=0;i<26;i++)
{ if (i%9==0)
printf("\n");
printf("%c(%d)",'A'+i,num[i]);
}
}
着重看一下memset(num,0,26*sizeof(int));
这段话是什么意思。。。。

你的Num不是定义为一个大小为26的数组吗?可以放26个数是吧?
这个函数的作用就是在num(这里是一个指针哦)开头的内存范围内,把26*sizeof(int)这么大的地方全部设置成0.

也就是把数组全部填充为0.。
看看微软给的解释吧:
Sets buffers to a specified character.

void *memset(
void* dest,
int c,
size_t count
);

Parameters
dest
Pointer to destination.
c
Character to set.
count
Number of characters.
Return Values
memset and wmemset return the value of dest.
Remarks
The memset and wmemset functions set the first count characters of dest to the character c.
Example
/* MEMSET.C: This program uses memset to
* set the first four characters of buffer to "*".
*/

#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, '*&