C语言 memset函数及其用法

定义

void *memset(void *s, int c, unsigned long n);

描述

将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int 型。s 是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。

例子

# include <stdio.h>
# include <string.h>
int main(void)
{
    int i;  //循环变量
    char str[10];
    char *p = str;
    memset(str, 0, sizeof(str));  //只能写sizeof(str), 不能写sizeof(p)
    for (i=0; i<10; ++i)
    {
        printf("%d\x20", str[i]);
    }
    printf("\n");
    return 0;
}

根据memset函数的不同,输出结果也不同,分为以下几种情况:

memset(p, 0, sizeof(p));  //地址的大小都是4字节
0 0 0 0 -52 -52 -52 -52 -52 -52

memset(p, 0, sizeof(*p));  //*p表示的是一个字符变量, 只有一字节
0 -52 -52 -52 -52 -52 -52 -52 -52 -52

memset(p, 0, sizeof(str));
0 0 0 0 0 0 0 0 0 0

memset(str, 0, sizeof(str));
0 0 0 0 0 0 0 0 0 0

memset(p, 0, 10);  //直接写10也行, 但不专业
0 0 0 0 0 0 0 0 0 0

参考:

http://c.biancheng.net/view/231.html

原文地址:https://www.cnblogs.com/sea-stream/p/11219742.html

时间: 2024-10-11 11:47:55

C语言 memset函数及其用法的相关文章

C语言之函数指针用法总结

一.函数返回指针值 函数是实现特定功能的程序代码的集合,函数代码在内存中也要占据一段存储空间 (代码区内),这段存储空间的起始地址称为函数入口地址.C语言规定函数入口地址为函数的指针,即函数名既代表函数,又是函数的指针(或地址). 1.函数的返回类型可以是指针类型,即函数返回指针值,其定义形式为: 2.函数返回指针值,需要考虑指针有效性的问题,例如:  这个返回有问题,因为它返回的是函数局部变量a的地址值.当函数调用结束后,函数局部变量会释放,变成未知对象.在return语句时,&a还是有效的,

c语言strtod()函数的用法

函数原型: #include <stdlib.h> double strtod(const char *nptr, char **endptr); C语言及C++中的重要函数. 名称含义 strtod(将字符串转换成浮点数) 相关函数 atoi,atol,strtod,strtol,strtoul 函数说明 strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回. 若endptr不为NUL

memset函数用法及注意事项

头文件#include<cstring> ------------------------------------------ 在memset使用时要千万小心,在给char 以外 的数组赋值时,     只能初始化为0或者-1.    (看最后的0和1的补码)///////////      给bool类型数组可以初始化1------------------------------------------ 头文件#include<cstring>int arr[100];memse

[C/C++基础] C语言常用函数memset的使用方法

函数声明:void *memset(void *s, int ch, size_t n); 用途:为一段内存的每一个字节都赋予ch所代表的值,该值采用ASCII编码. 所属函数库:<memory.h> 或者 <string.h> 参数:(1)s,开始内存的地址:(2)ch和n,从地址s开始,在之后的n字节长度内,把每一个字节的值都赋值为n. 使用举例: 代码如下 编译运行结果 说明: 该函数最常用的用途就是将一段新分配的内存初始化为0.例如我们代码的第9-10行. 需要注意的是,函

R语言seq()函数用法

1.seq() 用来生成一组数字的函数. Usage: ## Default S3 method:seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),length.out = NULL, along.with = NULL, ...)seq.int(from, to, by, length.out, along.with, ...)seq_along(along.with)seq_len(length.out) Arguments:

C语言中关于scanf函数的用法

scanf()函数的控制串 函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息.可以读入任何固有类型的数据并自动把数值变换成适当的机内格式. 其调用格式为: scanf("<格式化字符串>",<地址表>); scanf()函数返回成功赋值的数据项数,出错时则返回EOF. 其控制串由三类字符构成

memcpy,memmove,memset函数福彩3D平台搭建用法及实现

一.函数介绍:福彩3D平台搭建论坛:haozbbs.com Q14465950671.memcpy函数原型:extern void memcpy(void dest, const void *src, size_t count);用法:#include<string.h>功能:由src所指内存区域复制count个字节到dest所指内存区域.说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针.注意:和strcpy相比,memcpy不是遇到'/0'就结束,而是一定会拷贝完n个字

C语言strlen()函数用法

C语言strlen()函数:返回字符串的长度 头文件:#include <string.h> strlen()函数用来计算字符串的长度,其原型为:unsigned int strlen (char *s);  s为指定的字符串 eg: #include<stdio.h> #include<string.h> int main() { char *str1 = "http://see.xidian.edu.cn/cpp/u/shipin/"; char

c语言memset源码

c语言memset源码 一.用法 void *memset(void *s, int ch, size_t n);作用:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作.不知道有没有像我一样把memset当作万能的初始化工具,例如:int arr[n];memset(arr,1,n*sizeof(int));这样得到的arr数组一定不是全0,而是16843009,下面解释原因.首先,变量类型的本质只是标志