60.【C语言】内存函数(memset函数)
3.memset函数
*简单使用
memset:memory set
cplusplus的介绍 点我跳转
翻译:
函数
memset
void * memset ( void * ptr, int value, size_t num );
填充内存块
将ptr指向的内存块的前num个字节设置为指定值(解释为无符号char)。
(指针ptr类型为void*,因此可以接受任何类型的数组)
参数
ptr:指向要填充的内存块
value:要设置的值,
num:要设置的字节个数
size_t是无符号整型
返回值
ptr被返回
如将arr数组的每一个字节都设成01
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{int arr[] = { 1,2,3,4,5 };memset(arr, 1, 5 * 4);//int类型的数组,一个元素占4个字节return 0;
}
x86环境下,打开内存窗口
输入&arr
注意内存中每一个元素显示为01 01 01 01
十六进制转十进制:1010101H=16843009D(D为Dec的缩写,十进制)
所以在使用memset时要小心,是以字节为单位操作的!!!
同样对于char类型的数组
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{char arr[] = { '12345'};memset(arr, 1, 5);return 0;
}
memset处下断点
执行至return 0;后
char数组每个元素占1个字节,\x1为十六进制的1
注意:用memset改动时要小心,不能越界访问!
否则显示
4.memcmp函数
memcmp:memory compare
cplusplus网的介绍 点我跳转
翻译:
函数
memcmp
int memcmp ( const void * ptr1, const void * ptr2, size_t num );
比较两个内存块
比较分别由ptr1和ptr2指向的前num个字节的内存块,如果两者相等,返回0,如果他们两个不同(较大或较小),返回非0数字
注意memset不同于strcmp,memset一直比较至字符串结尾的\0
参数
ptr1:指向内存块的指针
ptr2:指向内存块的指针
num:要比较的字节数
返回值
返回一个整型数值表明两个内存块的内容之间的关系