memset是如何赋值的以及一些遐想

根据测试得知。。。

memset是获取第二个参数的二进制从右边起的八位也就是一个字节,

不断重复的填充第三个参数那么多次填充到以第一个参数为起端的连续区域里

至少C/C++是这样

所以呢,如果要给一个int数组每个元素都赋值一个同样很大的数,

我们当然希望一个数的二进制的1尽可能的多,

由于int在计算机里是用补位表示的,也就是说当给一个有7个1的二进制去赋值的时候得到的数是最大的

这个数就是127啦

为什么不是8个呢……因为符号位若为1就是负数了

当然了很显然想到若是无符号的int,也就是unsiged int的话,赋值8个1就可以得到无符号位的最大数赋值数组的每个元素

也就是255啦

于是以此类推,就可以很巧妙的用memset给数组赋值一连串相同的你希望的数

时间: 2025-01-20 06:27:40

memset是如何赋值的以及一些遐想的相关文章

memset 函数的赋值问题

memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组, c:是赋给buffer的值, count:是buffer的长度. 这个函数在socket中多用于清空数组.如:原型是memset(buffer, 0, sizeof(buffer)) Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为' '或'/0': 例:char a[100];memset(a,

关于memset的赋值(最大值最小值的选择)

memset赋值赋的是ASSCII码转为二进制赋值 比如 memset(,0xff,sizeof()),0xff转为二进制11111111,int为4字节所以最后为11111111111111111111111111111111为-1.(化为二进制补位,然后再赋值). 而OIER通常都希望能够通过memset赋给数组一个最大值 ## 如何定义这个无穷大 这个主要还是看数据范围. 如果直接用int最大值或者和最大值同位数的值作为无穷大的话 比如 2147483647 + 999 爆了int , 它

【memset】关于memset的初始最大最小值

声明:也是摘自网上各路大神的. memset的正规用法是只能用来初始化char类型的数组的,也就是说,它只接受0x00-0xFF的赋值. 因为char是1字节,memset是按照字节赋值的,相当于把每个字节都设为那个数,所以char型的数组可赋任意值: 而对于也常用的int类型,int是4个字节,当memset(,1,sizeof());时,1相当于ASSCII码的1,1转为二进制00000001,当做一字节,一字节8位,int为4字节,所以初始化完每个数为0000000100000001000

C++的新手入门64个答疑

基本部分:1.ctrl+f5 调试不运行,会出现press anykey to continuef5 调试2.c++变c,修改Stdafx.h,将#include<stdio.h>替换为#include<iostream>在主函数源文件中加入using namespace std; 数据类型3.关于字符型变量.input:char a=10;int b=a+'\a';output:b=17.但是字符型的输出不是整数,而是该整数所代表的ASCII码字符.input:char a=65

关于无穷大量的选择

在解题时候,通常有遇到设置为无穷大的情况.这时候通常用0x7fffffff来设置,他是计算机32位整数最大数,相当于INT_MAX.但是在很多时候这样设置并不会是最佳的,还可能导致bug,这是由于我们有的时候希望无穷大+无穷大=无穷大,比如在prim算法或者Dijstra算法中对边的松弛操作,这个时候INT_MAX随便加上一个数就会溢出,从而导致结果错误. 事实上另外一个数字0x3f3f3f3f的十进制是1061109567,这与0x7fffffff是同一个数量级的.我们用0x3f3f3f来代替

20160221.CCPP体系详解(0031天)

程序片段(01):01.结构体静态数组.c+02.结构体动态数组.c 内容概要:结构体数组 ///01.结构体静态数组.c #include <stdio.h> #include <stdlib.h> #include <string.h> //01.C语言的结构体特点: // 1.C语言要求结构体或者共用体至少得有一个成员 // 也就是说C语言并不允许空结构体或者空共用体的出现! // 2.严格区分采用结构体类型到底定义的是哪种具体变量: // 普通变量+指针变量+数

多重背包Q

急!灾区的食物依然短缺!  为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买.  请问:你用有限的资金最多能采购多少公斤粮食呢? 后记:  人生是一个充满了变数的生命过程,天灾.人祸.病痛是我们生命历程中不可预知的威胁.  月有阴晴圆缺,人有旦夕祸福,未来对于我们而言是一个未知数.那么,我们要做的就应该是珍惜现在,感恩生活――  感谢父母,他们给予我们生命,抚养我们成人:  感谢老

memset赋值整形数组出现的问题

#include <iostream> #include <string> using namespace std; int main() { char a[10]; int b[10]; memset(a, '*', sizeof(a)); memset(b, 1, sizeof(b)); cout << a << endl; cout << b << endl; system("pause"); } 输出结果:

memset 赋值

这几天做图论的 最小生成树和最短路 什么的. 整了整memset,把我对memset的理解说下吧,以后有新体会再加上来. 相信大家都会用string.h下的memset 赋值吧. 很简单,特别是对于搜索时候 vis数组的赋值,最小生成树和最短路的used数组也不错. 但是,都知道memset只能赋0和1, 内部机构是通过按位来实现的. 而这次,来讲一下memset赋大值. 我们可以用memset赋 0xkfkfkfkf 的值(k=1,2,3..7) 后面8,9对于int型有些超范围啊 这样,我们