内存函数__memset

简介: memset使用起来比较方便,但也有不足,在对整形初始化时除了初始化为0和-1不能初始化成其他值,我们也可以用循环去完成这些初始化,相对于结构来说的话,memset更加简洁

一.函数简介

memset按照字节数对内存块进行初始化,引用头文件#include<string.h>

函数声明:

void * memset ( void * ptr, int value, size_t num );

ptr:初始化的空间

value:要被初始化的值

num:字节

返回值:无符号指针类型

二.注意事项

memset按照字节数对内存块进行初始化时,不能所以不能用它将int数组出初始化为0和-1之外的其他值

例如:

1. #include<stdio.h>
2. #include<string.h>
3. int main()
4. {
5. int arr[10]={0};
6. memset(arr,1,4);
7. for(int i=0;i<10;i++)
8.     {
9. printf("%d\n",arr[i]);
10.     }
11. return 0;
12. }

0755BD45-BEB7-41FB-A8A9-CC9E02C0716F.jpeg

看到arr[0]并没有被赋值为1,以下解释

memset函数只能取value的后八位赋值给每个字节,数组arr是整形,整形占有4个字节,而memset函数还是按照字节为单位进行赋值,将1(00000001)赋给每一个字节。所以arr[0]值为(00000001 00000001 00000001 00000001),十进制就是16843009。

字符类型初始化事例:

1. #include<stdio.h>
2. #include<string.h>
3. int main()
4. {
5. char arr[10]={0};
6. memset(arr,'a',10*sizeof(char));//是将每个字节都设置成1
7. for(int i=0;i<10;i++)
8.     {
9. printf("%c\n",arr[i]);
10.     }
11. return 0;
12. }

E75F71B8-B79A-47DB-9322-EBC292B3010B.jpeg

总结:

memset使用起来比较方便,但也有不足,在对整形初始化时除了初始化为0和-1不能初始化成其他值,我们也可以用循环去完成这些初始化,相对于结构来说的话,memset更加简洁



相关文章
|
3月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
44 3
|
1月前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
64 6
|
3月前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
3月前
|
存储 程序员 编译器
C语言——动态内存管理与内存操作函数
C语言——动态内存管理与内存操作函数
|
3月前
|
编译器 C语言 C++
详解C/C++动态内存函数(malloc、free、calloc、realloc)
详解C/C++动态内存函数(malloc、free、calloc、realloc)
475 1
|
3月前
|
程序员 C语言
C语言内存函数精讲
C语言内存函数精讲
|
3月前
|
存储 C语言
【c语言】字符串函数和内存函数
本文介绍了C语言中常用的字符串函数和内存函数,包括`strlen`、`strcpy`、`strcat`、`strcmp`、`strstr`、`strncpy`、`strncat`、`strncmp`、`strtok`、`memcpy`、`memmove`和`memset`等函数的使用方法及模拟实现。文章详细讲解了每个函数的功能、参数、返回值,并提供了具体的代码示例,帮助读者更好地理解和掌握这些函数的应用。
43 0
|
3月前
|
C语言 C++
c语言回顾-内存操作函数
c语言回顾-内存操作函数
51 0
|
3月前
|
存储 C语言 C++
来不及哀悼了,接下来上场的是C语言内存函数memcpy,memmove,memset,memcmp
本文详细介绍了C语言中的四个内存操作函数:memcpy用于无重叠复制,memmove处理重叠内存,memset用于填充特定值,memcmp用于内存区域比较。通过实例展示了它们的用法和注意事项。
87 0
|
3月前
一刻也没有为它哀悼~接下来登场的是动态内存分配的malloc与realloc以及free函数
一刻也没有为它哀悼~接下来登场的是动态内存分配的malloc与realloc以及free函数
88 0

热门文章

最新文章