memset函数及注意事项
memset函数的原型为:void * memset(void *ptr,int value,size_t num);用于为地址ptr开始的num个字节赋值value。
memset函数的头文件为:C:<memory.h>或<string.h> C++:<cstring>。
在用memset为申请的数组赋值时,如果了解他的赋值原理,很有可能会造成一些不必要的隐形错误,令人头疼不已。memset函数在为数组(单个变量也可以)赋值时,是逐个字节赋值的,ptr开始的num个字节中的每个字节都赋值为value。所以我们就要注意了:
(1)若ptr指向的是char型地址,value可以为任意字符值。(因为一个字符占一个字节);
(2)若ptr指向的非char型地址(即最小存储单位不是一个字节的数据类型),如int型地址,要想赋值正确,value的值只能是-1或0,因为-1和0转换为二进制后每一位都是一样的,这里假设int型占四个字节,则-1=0XFFFFFFFF,0=0X00000000。
例:正确赋值:
int a[10];
memset(a,-1,sizeof(a));

赋值后a中元素为:0xFF 0XFF 0XFF 0XFF。因为int型占四个字节,memset的赋值方式是逐个字节进行赋值,所以元素的值实际上是四个字节合在一起的值:0XFFFFFFFF=-1。
例:错误赋值:
int a[10];
memset(a,1,sizeof(a));
赋值后a中元素为:0X01 0X01 0X01 0X01,即:0X01010101=16843009。

memset函数及注意事项的更多相关文章
- memset函数用法及注意事项
头文件 #include<cstring>// or #include<memory.h> ------------------------------------------ ...
- memset函数的使用
void *memset(void *s, int ch, size_t n); 说明:将s中前n个字节 (typedef unsigned int size_t)用 ch 替换并返回 s 关于mem ...
- cpp中memset函数的注意点
可参考: C++中memset函数的用法 C++中memset函数的用法 C++中memset()函数的用法详解 c/c++学习系列之memset()函数 透彻分析C/C++中memset函数 mem ...
- C++之memset函数
可参考: C++中memset函数的用法 C++中memset函数的用法 C++中memset()函数的用法详解 c/c++学习系列之memset()函数 透彻分析C/C++中memset函数 mem ...
- memset函数详解
语言中memset函数详解(2011-11-16 21:11:02)转载▼标签: 杂谈 分类: 工具相关 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大 ...
- 深入学习 memset 函数
最近,和同学讨论了一下memset函数,趁着周五空闲做一总结. memset函数最常用的功能就是初始化数组了(主要是置零),如 #include <iostream> #include & ...
- strcpy, memcpy, memset函数
一. strcpy函数 原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #inclu ...
- memset函数具体说明
1.void *memset(void *s,int c,size_t n)总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c. 2.样例#include void main(){char ...
- C/C++中memset函数
本文学习参考http://baike.baidu.com/link?url=ZmSyY8ciB_nJt9KM-W2fiEFJrC2mugFsLqRdY2b4pLe8rD_jRXyN7_pj0GBBD2 ...
随机推荐
- <label>标签的相关内容
㈠<label>标签的定义与用法 ⑴<label> 标签为 input 元素定义标注(标记). ⑵label 元素不会向用户呈现任何特殊效果.不过,它为鼠标用户改进了可用性.如 ...
- tensorboard的log查看方法
使用:tensorboard --logdir=D:\LOG logs --host=127.0.0.1
- Python3学习笔记(十二):闭包
闭包定义: 在一个外函数中定义了一个内函数,内函数里引用了外函数的临时变量,并且外函数的返回值是内函数的引用.这样就构成了一个闭包. 我们先来看一个简单的函数: def outer(a): b = 1 ...
- Android_(传感器)指南针
Android方向传感器 传感器中的X:如上图所示,规定X正半轴为北,手机头部指向OF方向,此时X的值为0,如果手机头部指向OG方向,此时X值为90,指向OH方向,X值为180,指向OE,X值为270 ...
- 安装python第三方模块
下载 第三方模块的下载地址:https://pypi.python.org/pypi 其他版本的第三方模块下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs ...
- mybatis逆向工程的text类型的一个小坑
数据库如果配有text的数据类型的 mybatis生成逆向工程的时候会单独将text提取出来 ByExampleWithBLOBs 会生成上面后缀的查询和修改的语句 因此查询起来会产生没有必要的麻烦, ...
- git多人参与的项目 -> 分支代码如何合并到主干
个人理解:合并分支时候就是当前分支,与别的分支先合并一遍,然后解决分支中存在的所有冲突,之后将本地分支代码提交到git远程仓库,之后切换主干分支 ,将主干分支与分支内容合并,解决冲突, 在提交主干分支 ...
- Contacts解析
显示联系人相关类packages/apps/Contacts/src/com/android/contacts/activities/PeopleActivity.javapackages/apps/ ...
- Java中for each与正常for循环效率对比
循环ArrayList时,普通for循环比foreach循环花费的时间要少一点:循环LinkList时,普通for循环比foreach循环花费的时间要多很多. 当我将循环次数提升到一百万次的时候,循环 ...
- .slideUp()
.slideUp() Effects > Sliding .slideUp( [duration ] [, complete ] )Returns: jQuery Description: Hi ...