`
Riddick
  • 浏览: 642095 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

C++中的FILL和MEMSET(zzl)

阅读更多

fill 的头文件是<iostream> 命名空间是std;
示范代码:

#include<iostream>
using namespace std;
int main()
{
       char s[100];
       fill(s,s+100,'a');
       for(int i=0;i<100;i++)
          cout<<s[i];
       cout<<endl;
       system("pause");
       return 0;
}

 

它的原理是把那一块单元赋成指定的值,与memset不同,
memset是按字节填充的例如:
这个例子可以很好的区别memset和fill:

#include<iostream>
using namespace std;
int main()
{
       int  d[100];
       fill(d,d+100,1);
       for(int i=0;i<100;i++)
          cout<<d[i]<<" ";
       cout<<endl;
       memset(d,1,100*sizeof(int));
       for(int i=0;i<100;i++)
       cout<<d[i]<<" ";
       cout<<endl;
       
       system("pause");
       return 0;
}

 
运行结果如下:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 
16843009 

所以不难看出memset int 单元为1 时相当于
(1<<24)+(1<<16)+(1<<8)+1  =  16843009;

注意:<< 优先级低于+。

分享到:
评论

相关推荐

    memset头文件c++版

    memset头文件 c++版

    C++中ZeroMemory、memset危险需慎用

    使用C/C++编程时,常使用ZeroMemory、memset或 “={0}”来对结构体对象进行初始化或清零。然而这三种方式都有各自的特点,使用时需谨慎,否则容易出现严重错误,本人解决一个导致宕机的bug,查了几小时,才发现是由...

    包含string对象的结构与memset初始化操作

    ### 包含`std::string`对象的结构与`memset`初始化操作 #### 案例背景 在软件开发过程中,经常会遇到...通过对`memset`和`std::string`的深入理解,我们可以更好地避免这类问题的发生,从而提高软件的质量和稳定性。

    C++中memset函数用法详解

    `memset`函数是C++(实际上也源自C语言)中用于初始化内存的工具,它的功能是将一块内存区域的所有字节设置为特定的值。在深入讲解`memset`之前,我们先来了解一下函数的基本语法: ```cpp void* memset(void* s, ...

    ntdll.dll文件中的memset模块运算流程图

    在C和C++编程语言中,`memset`是定义在`&lt;string.h&gt;`头文件中的标准库函数。而在ntdll.dll中,`memset`是被实现为内核级别的版本,以满足系统级操作的需求,如初始化数据结构或清零内存区域。 `memset`函数的基本...

    面试题(c++)一些面试中遇到的题目

    在C++面试中,经常会遇到一些考察编程基础和理解的问题。以下是对提供的面试题目的详细解答: 1. **转换字符大小写**: 这道题要求用C语言实现一个函数,将大写字母转换为小写字母。题目中给出的`tolower()`函数...

    memset用法 很详细

    ### memset函数详解与应用 `memset`是C/C++中一个非常重要的函数,用于内存操作,尤其是在初始化数据结构时极为常见。...特别是在性能敏感的应用中,正确使用`memset`可以显著提高程序的效率和可靠性。

    C/C++中文手册

    C/C++编程语言是计算机科学领域中的基础工具,被广泛应用于系统编程、软件开发、游戏制作、嵌入式系统等领域。这份"C/C++中文手册"涵盖了这两种语言的关键知识点,旨在帮助开发者快速查找和理解相关函数及库的使用...

    用C++来实现UrlEncode

    1. **数字和字母不变**:在URL编码中,英文字母(大写和小写)以及阿拉伯数字在编码后保持原样,无需进行任何转换。 2. **空格变为"+"号**:空格在URL中不能直接表示,因此会被替换为加号(+)。这是为了确保URL在...

    C/C++中memset,memcpy的使用及fill对数组的操作

    对数组的整体赋值,以及两个数组间的复制容易出错,这里使用string头文件中的memset和memcpy进行 不必遍历数组,速度快。 之前没有头文件,显示decla 头文件: 代码: /* Project: 数组的整体赋值与复制 Date: ...

    C/C++ 中memset() 函数详解及其作用介绍

    包含在头文件中,可以用它对一片内存空间逐字节进行初始化; 原型为 : void *memset(void *s, int v, size_t n); 这里s可以是数组名,也可以是指向某一内在空间的指针; v为要填充的值; n为要填充的字节数; 例子...

    Linux下替换memset函数

    4. **考虑系统调用**:在Linux中,如果你的自定义`memset`涉及到大量内存的处理,可能需要考虑使用系统调用来更高效地完成任务,比如`mmap`和`write`等。 5. **了解ASLR的影响**:如果是因为ASLR导致的段错误,你...

    memset的初浅体会

    memset 函数是 C 语言中的一个常用函数,用于将一块内存中的所有字节设为某个特定的值。它的函数原型为 `void *memset(void *dest, int c, size_t count);`,其中 `dest` 是要被设置的内存地址,`c` 是要设置的值,`...

    浅析C++中memset,memcpy,strcpy的区别

    在C++编程中,`memset`, `memcpy`, 和 `strcpy` 是三个经常使用的函数,用于处理内存区域的数据操作。它们各自有不同的用途和特点,本文将深入解析它们的区别。 `memset` 函数是用来设置一块内存区域的值。其原型为...

    c++builder 中的split

    ### C++Builder中的字符串分割技巧:自定义Split函数 在.NET技术中,`Split`函数是一种非常实用且常见的工具,用于将一个字符串按照指定的分隔符进行分割,并返回一个包含分割后各部分的新字符串数组。然而,在C++...

    C/C++笔试题库 (整理版)

    在C/C++语言中,memset、memcpy和strcpy都是内存操作函数,它们的区别在于其功能和使用方式。memset函数用于将一段内存空间设置为某个字符,例如memset(a, '\0', sizeof(a))。memcpy函数用于拷贝内存中的数据,例如...

    memset资源.zip

    在C和C++等编程语言中,memset函数是一个用于设置内存区域内容的标准库函数。它允许程序员将指定内存区域的内容设置为一个特定的值,这在初始化数据结构、清除内存等方面非常有用。本文将深入探讨memset函数的原理、...

    Memset、Memcpy、Strcpy 的作用和区别

    Memset、Memcpy和Strcpy是C语言中常用的三个内存操作函数,它们分别用于内存填充、内存拷贝和字符串拷贝,虽然看起来功能相似,但每个函数都有其独特的用途和特点。 Memset函数主要用于将指定内存区域的前count个...

    AES加密算法(C++实现,附源码)

    在源码中,开发者可能会使用标准库如 `&lt;vector&gt;` 和 `&lt;string&gt;` 来处理字节序列,同时使用如 `memcpy` 或 `memset` 进行内存操作。 为了确保安全,C++实现的AES加密算法需要遵循以下原则: 1. 密钥管理:密钥必须...

Global site tag (gtag.js) - Google Analytics