memset函数

转载 2006年05月27日 09:16:00
memset函数的用法:
将已开辟内存空间 s 的首 n 个字节的值设为值 c

下面是一个例子

#include <stdio.h>
#include <string.h>
main(){
    char *s="Golden Global View";

    clrscr();

    memset(s,'G',6);
    printf("%s",s);

    getchar();
    return 0;
} 


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

char str[100];
memset(str,0,100);



memset用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;例:char a[100];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的内存地址溢出。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    char a[5];
    memset(a,'1',5);
    for(int i = 0;i < 5;i++)
      cout<<a[i]<<"  ";
    system("pause");
    return 0;
}
而,如下程序想吧数组中的元素值设置成1,却是不可行的
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    int a[5];
    memset(a,1,5);//这里改成memset(a,1,5 *sizeof(int))也是不可以的
    for(int i = 0;i < 5;i++)
      cout<<a[i]<<"  ";
    system("pause");
    return 0;
}

因为第一个程序的数组a是字符型的,字符型占据内存大小是1Byte,而memset函数也是以字节为单位进行赋值的,所以你输出没有问题。
而第二个程序a是整型的,使用memset还是按字节赋值,这样赋值完以后,每个数组元素的值实际上是0x01010101即十进制的16843009。

相关文章推荐

透彻分析C/C++中memset函数

透彻分析C/C++中memset函数     在C语言中,经常需要对内存进行操作,里面涉及很多函数,但是memset函数的使用有一点需要大家格外注意,这也是我在做项目时遇到过的一个问题,调试了很久...

memset函数的用法

将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。 目录 需要的头文件 ...

memset函数详细说明

1。void *memset(void *s,int c,size_t n) 总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。 2。例子 #include void m...

C语言之memset函数

【FROM MSDN && 百科】 原型:  void *memset(void *s,int ch,size_t n); #include 将 s 中前 n 个字节用 ch 替...

memset函数详细说明

1。void *memset(void *s,int c,size_t n) 总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。 2。例子 #include void m...

memset() 函数详解(标记备忘)

#include   void *memset( void *buffer, int ch, size_t count );功能: 函数拷贝ch 到buffer 从头开始的count 个字符里, 并返...
  • weege
  • weege
  • 2011-06-26 22:39
  • 541

memset /memcpy /strcpy函数的使用与区别

(1) Memset             原型:   extern void *memset(void *buffer, int c, int count)...

memset函数详细说明

1。void *memset(void *s,int c,size_t n) 总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。 2。例子 #include void m...

几个重要库函数的实现-strcpy,strncpy,memcpy,memset

面试官很喜欢让求职者写一些常用库函数的实现,有很多是和字符串相关的,有一些是关于内存拷贝的。一般,常会让写的函数有以下几个: strcpy , strncpy, memcpy。 memse...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)