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的二进制都是0,-1的二进制都是1。
最近才发现memset的这个问题,之所以要写这篇文章,是因为我在自己的DES算法里多处用到了memset,而我当时却不知memset有这个问题,特此记下,引以为鉴。
分享到:
相关推荐
内容涵盖memset函数的定义、使用方法、注意事项、局限性、安全性、优化技巧以及社区支持等高级内容。 **适用人群:** 本教程适合所有对编程和C语言感兴趣的初学者,尤其是那些需要了解如何在C语言中使用memset函数的...
`memset`的注意事项 - `memset`只能用于可写的内存区域,如果试图对只读或不可访问的内存调用`memset`,可能会导致程序崩溃或未定义的行为。 - 对于非字符类型的数据,如整型、浮点型等,`memset`将按字节填充,...
### memset函数详解与应用 `memset`是C/C++中一个非常重要的函数,用于内存操作,尤其是在初始化数据结构时极为常见。它属于`<cstring>`库,在标准C库中定义,用于填充一块连续的内存区域。 #### 函数原型 ```c ...
6. **注意事项**: - 使用`memset`设置内存时,要确保`n`的值不超过内存区域的实际大小,否则可能导致内存越界。 - 当`memset`用于设置结构体或数组时,记得将整个结构体或数组视为一个整体,而不是单独的元素。 ...
2. **memset函数**:这是一个用于设置内存区域值的函数,原型为`void *memset(void *ptr, int value, size_t num)`,它将ptr指向的内存区域的前num个字节设置为value的值。在分配内存后,通常使用memset将内存区域...
本文将详细介绍这些函数的具体用法和注意事项。 #### 二、memset() - 内存填充函数 **函数原型**: ```c void *memset(void *ptr, int value, size_t num); ``` **功能**: `memset()`函数用于将一段内存区域的...
4. **注意事项**: - `memset`不能用于填充浮点数数组,因为浮点数的内存表示方式不是字节对齐的,可能会导致意想不到的结果。 - 在处理大内存区域时,`memset`比循环更高效,因为它通常由编译器优化成汇编级别的...
void 指针详解(用法、注意事项等等) void 指针是一种特殊的指针类型,它可以指向任何类型的对象,但是它自身的类型是未知的。因此,void 指针不能进行自增操作,因为系统不知道它指的内容的大小。 void 指针的...
2. 函数详解:提供每个函数的详细说明,包括参数列表、返回值、使用示例和注意事项。 3. 代码示例:展示函数在实际编程中的应用,帮助理解函数的工作原理。 4. 多平台兼容:许多查询工具覆盖了不同操作系统(如Linux...
通过“C函数速查”资料,你可以快速查阅各个函数的用法和注意事项,提升编程效率。同时,理解函数的内部工作原理,以及何时使用哪个函数,将有助于写出更高效、更健壮的代码。在实际开发中,还应结合标准库文档(如...
- 查阅手册:使用`man`命令(在Unix/Linux系统中)或在线文档,了解函数的完整用法和注意事项。 4. **源代码的重要性** - 分析源代码能提升编程技巧:了解函数内部实现,有助于优化自己的代码。 - 提高问题解决...
该软件可能还包含了对每个函数的详细解释,例如参数列表、返回值、使用示例以及注意事项,这对于理解和记忆C语言函数的用法非常有帮助。同时,提供的`jb51.net.txt`可能是某个技术论坛的链接,提供更多的学习资源;`...
C语言函数速查手册是程序员必备的参考资料,它提供了全面的函数介绍、用法示例和注意事项,帮助开发者快速解决问题。本手册覆盖了从基本输入输出到高级系统调用的广泛主题。 一、C语言基础 C语言是面向过程的编程...
本讲解将深入探讨Linux环境下C语言的各种函数,包括它们的功能、使用方法以及注意事项。通过实例演示,帮助开发者更好地理解和应用这些函数。 1. **标准库函数** - `printf` 和 `scanf`:这两个函数是输入输出的...
0001 注释的使用方法及注意事项 2 0002 使用汇编语言 2 0003 如何使用内联函数 2 0004 如何使用#define自定义宏 3 0005 使用goto语句进行无条件跳转 3 0006 while循环转为for循环 3 0007 do while循环...
以上只是C语言中众多函数的一小部分,C函数速查资源很可能包含了更详尽的信息,包括每个函数的参数、返回值、注意事项以及示例代码。通过这份资料,开发者能够快速定位和理解C语言中任何函数的用法,提高编程效率。...
在学习过程中,整理和复习这些函数的用法和注意事项,可以帮助初学者快速掌握C语言在嵌入式环境中的应用。通过实践和查阅相关文档,可以进一步提高对这些函数的理解和应用能力。在实际项目中,结合调试工具,如`gdb`...
手册还可能涵盖了函数的参数、返回值、注意事项以及可能产生的错误情况,这些都是编程实践中至关重要的知识点。 总之,《C语言常用函数手册》是每一位C语言程序员的必备工具书,它能帮助开发者快速查找和理解函数的...
学习这些函数不仅需要理解它们的功能,还需要掌握正确的使用方式和注意事项,例如避免缓冲区溢出、确保内存管理的正确性,以及理解各种函数的返回值和错误处理机制。同时,对于更高级的主题,如指针操作、结构体和...
#### 注意事项 1. **路径格式**: 确保传入的路径格式正确且存在,避免因路径问题导致的程序异常。 2. **文件夹权限**: 若无权访问指定文件夹,函数可能无法正常执行。 3. **跨平台考虑**: 本代码适用于Windows环境...