精华内容
下载资源
问答
  •  块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作  用 法: void *memset(void *s, char ch, unsigned n);  程序例:  #include <string.h>  #include <stdio.h>  #...

    功 能: 将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: ***********

    memset函数详细说明

      1。void *memset(void *s,int c,size_t n)

      总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。

      2。例子

      main(){

      char *s="Golden Global View";

      clrscr();

      memset(s,'G',6);//貌似这里有点问题//

      printf("%s",s);

      getchar();

      return 0;

      } 

      【这个问题相当大,程序根本就运行不下去了,你这里的S志向的是一段只读的内存,而你memset又试图修改它,所以运行时要出错,修改办法char *s修改为char s[]】

      3。memset() 函数常用于内存空间初始化。如:

      char str[100];

      memset(str,0,100);

      4。memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘memset(a, '/0', sizeof(a));

      memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),会造成b的内存地址溢出。

      strcpy就只能拷贝字符串了,它遇到'/0'就结束拷贝;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串长度(第一个‘/0’之前)是否超过50位,如超过,则会造成b的内存地址溢出。

      5.补充:某人的一点心得

      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);

      6。strcpy

      原型:extern char *strcpy(char *dest,char *src);

      用法:#i nclude

      功能:把src所指由NULL结束的字符串复制到dest所指的数组中。

      说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

      返回指向dest的指针。

      memcpy

      原型:extern void *memcpy(void *dest, void *src, unsigned int count);

      用法:#i nclude

      功能:由src所指内存区域复制count个字节到dest所指内存区域。

      说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。

      memset

      原型:extern void *memset(void *buffer, int c, int count);

      用法:#i nclude

      功能:把buffer所指内存区域的前count个字节设置成字符c。

      说明:返回指向buffer的指针。

    转载于:https://www.cnblogs.com/sien-y/p/5923776.html

    展开全文
  • C语言memset函数及其用法 include <string.h> void *memset(void *s, int c, unsigned long n); 函数的功能是: 将指针变量 s 所指向的前 n 字节的内存单元 用一个“整数” c 替换,注意 c 是 int 型。 s 是 ...

    C语言memset函数及其用法

    include <string.h>

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

    函数的功能是:
    将指针变量 s 所指向的前 n 字节的内存单元
    用一个“整数” c 替换,注意 c 是 int 型。
    s 是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。
    在这里插入图片描述
    根据memset函数的不同,输出结果也不同,分为以下几种情况:
    memset(p, 0, sizeof§); //地址的大小都是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

    展开全文
  • memset函数及其用法C语言memset函数详解

    千次阅读 多人点赞 2020-05-13 20:12:47
    每种类型的变量都有各自的初始化方法,memset() 函数可以说是初始化内存的“万能函数”,通常为新申请的内存进行初始化工作。它是直接操作内存空间,mem即“内存”(memory)的意思。该函数的原型为: include <...

    定义变量时一定要进行初始化,尤其是数组和结构体这种占用内存大的数据结构。在使用数组的时候经常因为没有初始化而产生“烫烫烫烫烫烫”这样的野值,俗称“乱码”。

    每种类型的变量都有各自的初始化方法,memset() 函数可以说是初始化内存的“万能函数”,通常为新申请的内存进行初始化工作。它是直接操作内存空间,mem即“内存”(memory)的意思。该函数的原型为:

    include <string.h>

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

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

    memset() 的作用是在一段内存块中填充某个给定的值。因为它只能填充一个值,所以该函数的初始化为原始初始化,无法将变量初始化为程序中需要的数据。用memset初始化完后,后面程序中再向该内存空间中存放需要的数据。

    memset 一般使用“0”初始化内存单元,而且通常是给数组或结构体进行初始化。一般的变量如 char、int、float、double 等类型的变量直接初始化即可,没有必要用 memset。如果用 memset 的话反而显得麻烦。

    当然,数组也可以直接进行初始化,但 memset 是对较大的数组或结构体进行清零初始化的最快方法,因为它是直接对内存进行操作的。

    这时有人会问:“字符串数组不是最好用’\0’进行初始化吗?那么可以用 memset 给字符串数组进行初始化吗?也就是说参数 c 可以赋值为’\0’吗?”

    可以的。虽然参数 c 要求是一个整数,但是整型和字符型是互通的。但是赋值为 ‘\0’ 和 0 是等价的,因为字符 ‘\0’ 在内存中就是 0。所以在 memset 中初始化为 0 也具有结束标志符 ‘\0’ 的作用,所以通常我们就写“0”。

    memset 函数的第三个参数 n 的值一般用 sizeof() 获取,这样比较专业。注意,如果是对指针变量所指向的内存单元进行清零初始化,那么一定要先对这个指针变量进行初始化,即一定要先让它指向某个有效的地址。而且用memset给指针变量如p所指向的内存单元进行初始化时,n 千万别写成 sizeof§,这是新手经常会犯的错误。因为 p 是指针变量,不管 p 指向什么类型的变量,sizeof§ 的值都是 4。

    下面写一个程序:

    # 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§); //地址的大小都是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

    展开全文
  • void *memset(void *s, int c, unsigned long n); 描述 将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int 型。s 是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。...

     

    定义

    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

    展开全文
  • 函数的功能是:将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int 型。s 是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。参数 n 的值一般用 sizeof() 获取,
  • C 库函数 void *memset(void *str, int c, size_t n) 复制...声明下面是 memset() 函数的声明。void *memset(void *str, int c, size_t n)参数str -- 指向要填充的内存块。c -- 要被设置的值。该值以 int 形式传递...
  • 功能强大的C语言memset()函数用法 这篇文章是对memcpy()函数的简要介绍,并对这个函数做出几点重要的说明。 复制字符串的操作非常常见,为此C库为我们实现了这一操作并封装成函数,我们经常使用的就是strcpy()函数...
  • 头文件:#include<string.h> 作用:给字符串数组赋值为一个数 #include<stdio.h> #include<string.h> int main(){ ...memset(a,‘5’,sizeof(a));...注意:memset只能操作字符类型,对int类型无效 ...
  • c语言memset()函数

    2016-09-02 00:25:00
    1)名称:memset()函数 2)别称:char型初始化函数 ...4)用法: void *memset(void *s, char ch, unsigned n); 5)作用:在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操...
  • C语言memset函数 和 fill函数

    千次阅读 2019-05-27 17:33:40
    1. memset 用法:只能初始化成为0或者-1两个数值 #include <cstring> memset(a, 0, sizeof(a)); memset(a, -1, sizeof(a)); 2. fill 用法:可以使用任意数值填充固定区间 int a[10002]; fill(a, a+...
  •  块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作  用 法: void *memset(void *s, char ch, unsigned n);  程序例:  #include  #include  #include  int m
  • memset() 函数可以说是初始化内存的“万能函数”,我们通常拿他为新申请的内存进行初始化工作。它是直接操作内存空间,mem即“内存”(memory)的意思。 下面是 memset() 函数的声明。 void *memset(void *str, ...
  • memset函数及其用法

    2020-05-15 10:57:59
    C语言memset函数详解,这篇写的详细,码住。 http://c.biancheng.net/view/231.html
  • 主要介绍了深入学习C语言memset()函数用法,是C语言入门学习中的基础知识,需要的朋友可以参考下
  • C语言memset函数详解

    2018-03-19 15:33:57
    功能:将s所指向的某一块内存中的每个字节的...用法:void *memset(void *s, char ch, unsigned n);程序:[cpp] view plain copy#include &lt;string.h&gt; #include &lt;stdio.h&gt; #inc...

空空如也

空空如也

1 2 3 4 5 6
收藏数 103
精华内容 41
关键字:

c语言memset函数用法

c语言 订阅