头文件
#include<cstring>//
or
#include<memory.h>
------------------------------------------

在memset使用时要千万小心,在给char 以外 的数组赋值时,
     只能初始化为0或者-1。    (看最后的0和1的补码)
///////////      给bool类型数组可以初始化1
------------------------------------------

头文件#include<cstring>
int arr[100];
memset(arr,0,sizeof(int)*100);
arr是数组的首地址,0就是要将这些地址的内容赋值为0,sizeof(int)求出int类型的长度,
乘以100就表示arr数组的整个长度。

也可以这样  ------
     memset(arr,0,sizeof(arr));

------------------------------------------

memset函数用法及注意事项memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的。
其原型是:void* memset(void *_Dst, int _Val, size_t _Size);
使用时在文件头加上#include "stdlib.h" 。
_Dst是目标起始地址,_Val是要赋的值,_Size是要赋值的字节数 。

例1:

char str[9];
       我们用memset给str初始化为“00000000”,用法如下
       memset(str,0,8);
注意,memset是逐字节 拷贝的。
下面再看一个例子:
    例2:
      int num[8];
       我们用memset给str初始化为{1,1,1,1,1,1,1,1},

memset(num,1,8);//这样是不对的

一个int是4个字节的,8个int是32个字节,所以首先要赋值的长度就不应该为8而是32。
     因为memset是 逐字节 拷贝,以num为首地址的8字节空间都被赋值为1,
     即一个int变为0X00000001 00000001 00000001 00000001,
    显然,把这个数化为十进制不会等于1的。

所以,在memset使用时要千万小心,在给char以外的数组赋值时,
     只能初始化为0或者-1。    (看最后的0和-1的补码)

因为在计算机里,0的二进制都是0,-1的二进制都是1。

最近才发现memset的这个问题,之所以要写这篇文章,是因为我在自己的DES算法里多处用到了memset,而我当时却不知memset有这个问题,特此记下,引以为鉴。

---------------------
例如:

#include "stdio.h"
#include <string.h> 
int main()

   char s[100]="Golden Global View";
   memset(s,'G',6); 
   printf("%s",s);  
   getchar(); 
   return 0; 
}

结果

----------
GGGGGG Global View
----------

----------------------------------------------------------------------
补码+0和-0相同?

我知道+0和-0补码相同,可是比如在八位机上,
+0(00000000)求补码是10000000,
而-0(10000000)求补码是(00000000)啊,
求补码的做法是符号位不变,其余为取反,然后再加1,
没错吧,那我的错误出在哪里?

----------
提问者采纳

就没有正确的地方,在计算机中是不存在正负零之分的.
而你对补码理解又有错误的.补码只不过是用来表示带符号数而已.
补码的原则是:
   正数的补码是其本身,也就是原码.
   负数的补码是各位取反后加1.也就是其反码加1.
   +0的补码就是其原码,也就是说是0000 0000而已(对于8位来说)
   -0的补码是其反码加1,其反码是1111 1111,
   当然,其反码加1后就是溢出一个进位后,仍然是0000 0000.

----------------------------------------------------------------------

--------------------------------------------------------------------------------
请问-1的二进制如何表示?

不知道是1000000000000001    还是1111111111111111
我觉得是第一个,首位代表符号,0代表正、1代表负,剩下的代表实际数值,
为什么在C语言里第二个是-1呢

--------------------
提问者采纳

第一个是原码的话,
表示的也是-1第二个是补码表示的-1,
补码即原码除符号位外,全部取反+1
1000000000000001取反后是1111111111111110,再+1即1111111111111111 
C里面数是以补码方式来储存的

--------------------------------------------------------------------------------

memset函数用法及注意事项的更多相关文章

  1. memset函数用法

    1. memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组 c:是赋给buffer的值 cou ...

  2. memset()函数用法及其作用

    memset()函数原型是: extern void *memset(void *buffer, int c, int count) //buffer:为指针或是数组, //c:是赋给buffer的值 ...

  3. C++ memset函数用法

    #include<stdio.h>#include<string.h>int main(){ char buffer[] = "I love you!"; ...

  4. C语言 memset函数及其用法

    定义 void *memset(void *s, int c, unsigned long n); 描述 将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int ...

  5. memset函数及注意事项

    memset函数的原型为:void * memset(void *ptr,int value,size_t num);用于为地址ptr开始的num个字节赋值value. memset函数的头文件为:C ...

  6. memset函数及其用法,C语言memset函数详解

    在前面不止一次说过,定义变量时一定要进行初始化,尤其是数组和结构体这种占用内存大的数据结构.在使用数组的时候经常因为没有初始化而产生“烫烫烫烫烫烫”这样的野值,俗称“乱码”. 每种类型的变量都有各自的 ...

  7. cpp中memset函数的注意点

    可参考: C++中memset函数的用法 C++中memset函数的用法 C++中memset()函数的用法详解 c/c++学习系列之memset()函数 透彻分析C/C++中memset函数 mem ...

  8. C++之memset函数

    可参考: C++中memset函数的用法 C++中memset函数的用法 C++中memset()函数的用法详解 c/c++学习系列之memset()函数 透彻分析C/C++中memset函数 mem ...

  9. memset函数详解

    语言中memset函数详解(2011-11-16 21:11:02)转载▼标签: 杂谈 分类: 工具相关  功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大 ...

随机推荐

  1. js内置数据类型

    JS 中分为七种内置类型,七种内置类型又分为两大类型:基本类型和对象(Object). 基本类型有六种: number , string , boolean , null , undefined ,  ...

  2. 洛谷 P4071 [SDOI2016]排列计数

    洛谷 这是一道组合数学题. 对于一个长为n的序列,首先我们要选m个使之稳定\(C^{m}_{n}\). 且要保证剩下的序列不稳定,即错排\(D_{n-m}\). 所以答案就是:\[ANS=C^{m}_ ...

  3. Win7环境下Apache+mod_wsgi本地部署Django

    django基础已经掌握的同学可以尝试将项目发布已寻找些许成就感,以鼓励自己接下来进行django的进阶学习 以前你总是使用python manage.py runserver进行服务启动,但是却不知 ...

  4. 内置函数:max 用法

    内置函数——max Python max内置函数 max(iterable, *[, key, default]) max(arg1, arg2, *args[, key]) Return the l ...

  5. centos6.9下安装composer

    1.下载composer curl -sS https://getcomposer.org/installer | php ps:如果出现php无法运行的情况,请先把PHP加入环境变量 2.移动或复制 ...

  6. 023-Spring Boot 服务的注册和发现

    一.概述 服务调用 1.1.nginx方式 1.2.注册中心 二.注册中心[zookeeper] 2.1.安装zookeeper3.4.11 2.2.服务提供方,需要在服务启动时吗.,把服务的信息(I ...

  7. 前端之JQuery [续]

    JQuery使用技巧 1.prop属性实现全选,反选,取消功能 需求: 实现全选,反选,取消功能 代码如下: <!DOCTYPE html> <html lang="en& ...

  8. 使用新浪IP库获取IP详细地址

    使用新浪IP库获取IP详细地址 <?php class Tool{ /** * 获取IP的归属地( 新浪IP库 ) * * @param $ip String IP地址:112.65.102.1 ...

  9. 20145240《Java程序设计》第一周学习总结

    20145240 <Java程序设计>第一周学习总结 教材学习内容总结 第一周学习Java首先从最基本的下载.配置环境.了解基本人机命令行方式等基础知识,以及编写简单的"Hell ...

  10. 适配iOS9问题汇总

    iOS 9适配过程中出现的问题,收集的链接资料供大家学习分享. http://wiki.mob.com/ios9-对sharesdk的影响(适配ios-9必读)/ http://www.cocoach ...