关于memset,不大不小的问题

原创 2007年09月24日 16:08:00

今天遇到的头疼问题

应该说困扰我很久了,去网上查了查资料,呵呵,允许我再次转载吧~

转载自“我的铜斑蛇

memset函数详细说明

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

2。例子
#i nclude
#i nclude

main(){
char *s="Golden Global View";

clrscr();

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

getchar();
return 0;
} 
3。memset() 函数常用于内存空间初始化。如:
char str[100];
memset(str,0,100);

4。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的内存地址溢出。

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的指针。
 

Memset 初始化问题

本文学习内容转自: http://blog.csdn.net/wdkirchhoff/article/details/41512271 http://www.cnblogs.com/handsome...
  • yexiaohhjk
  • yexiaohhjk
  • 2016年10月01日 16:57
  • 1287

memset函数赋初值问题

我的第一篇博客。。。 今天写memset函数的时候遇到了老生常谈的话题,#include #include using namespace std; int main () { int ...
  • eo_yohe
  • eo_yohe
  • 2016年05月17日 18:59
  • 1167

【算法设计与数据结构】二分法解决最大值最小化问题——入门篇

问题描述把一个包含n个正整数的序列划分成m个连续的子序列。设第i个序列的各数之和为S(i),求所有S(i)的最大值最小是多少? 例子: 序列1 2 3 2 5 4划分为3个子序列的最优方案为 1 2...
  • jiange_zh
  • jiange_zh
  • 2015年09月03日 13:54
  • 1738

指针数组、数组指针、memset填充问题

函数原型 memset(dist , val,size); char test[]
  • zhong_sheng_
  • zhong_sheng_
  • 2014年05月26日 10:49
  • 1672

Memset 初始化问题

本文学习内容转自:http://blog.csdn.NET/wdkirchhoff/article/details/41512271  以及:http://www.cnblogs.com/hand...
  • Ontheway0101
  • Ontheway0101
  • 2016年10月08日 12:54
  • 156

C语言日常(Binary String Matching问题;memset()函数;gets()和scanf()函数区别)

Binary String Matching 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 Given two strings A and B, whose a...
  • dadaguaishangjiang
  • dadaguaishangjiang
  • 2017年12月31日 17:43
  • 16

关于C++ memset函数使用的问题

1. 关于该函数 函数原型:  memset(void *s,int ch,size_t n)       函数说明:       memset函数是计算机中C/C++语言函数。将s所指向的某一块内存...
  • wangwei6125
  • wangwei6125
  • 2017年06月17日 22:26
  • 199

关于memset函数的需要注意的问题

最近用到了memset函数,但是忽略了一点:memset函数的写入是按字节写入的。以下为自己犯错的地方: int *a = new int [100]; memset(a, 10, sizeof(i...
  • u012273127
  • u012273127
  • 2017年02月14日 18:58
  • 460

C标准库 memset 的一个问题

memset是C标准库的一个函数,其原型可以在string.h中找到。过多的介绍就不用了, 直接进入主题。 一、为什么断定是memset出错? 依然是数字图像处理的学习过程中遇到的一个问题。我在写...
  • LoveyChen
  • LoveyChen
  • 2013年11月28日 03:37
  • 901

hdu 3790 最短路径问题 (dijkstra算法+memset()用法)

最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub...
  • ren_hui
  • ren_hui
  • 2013年07月25日 20:45
  • 453
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于memset,不大不小的问题
举报原因:
原因补充:

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