C语言:内存初始化函数memset()

简介: 函数原型:void* memset(void *s,int c,size_t n)作用:将指针变量s所指向的地址,前n个字节用 ‘ c ’ 来初始化

一、包含于头文件


#include <memory.h>


二、用法


函数原型:void* memset(void *s,int c,size_t n)


作用:将指针变量s所指向的地址,前n个字节用 ‘ c ’ 来初始化

#include <memory.h>
int main()
{
    char arr1[] = "abcdefg";
    memset(arr1, 'm', 3);
    printf("%s\n", arr1);
    return 0;
}

运行结果

35e6a307b02fd972ec5473fc6fe17c32_49f98d2feb5e4547879c343e30641866.png

三、注意


memset函数不能用来将整型数组初始化为除 0 和 -1 以外的数字


因为memset函数是一个字节一个字节地去初始化,因为 0 和 -1 的高字节与低字节都相同


0的16进制表示为:0x 00 00 00 00


-1的16进制表示为:0x FF FF FF FF


每一位为4bit,每两位则为1字节


假设原来整型数组为 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };


memset(arr,2,sizeof(int))初始化前4个字节


若初始化为2,16进制表示为0x 00 00 00 02


初始化前:00 00 00 01  


初始化后:02 02 02 02  (初始化只用到初始化内容的1个字节,即02)


0x  02 02 02 02  = 33686018


则初始化后数组变为 { 33686018,2,3,4,5,6,7,8,9,10 }

#include <memory.h>
int main()
{
    int arr2[10] = { 1,2,3,4,5,6,7,8,9,10 };
    memset(arr2, 2, sizeof(int));
    int i = 0;
    while (i < 10)
    {
        printf("%d ", arr2[i]);
        i++;
    }
    return 0;
}


运行结果

7c82b5ebf42045f82e9d09e21dd5b57f_dd1de3fcec9b437783116fa99281a471.png

目录
相关文章
|
7天前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
51 12
|
4天前
|
存储 C语言 计算机视觉
在C语言中指针数组和数组指针在动态内存分配中的应用
在C语言中,指针数组和数组指针均可用于动态内存分配。指针数组是数组的每个元素都是指针,可用于指向多个动态分配的内存块;数组指针则指向一个数组,可动态分配和管理大型数据结构。两者结合使用,灵活高效地管理内存。
|
14天前
|
C语言
c语言调用的函数的声明
被调用的函数的声明: 一个函数调用另一个函数需具备的条件: 首先被调用的函数必须是已经存在的函数,即头文件中存在或已经定义过; 如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。 如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。 如果被调用的函数定义出现在主调函数之前可以不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明
29 6
|
27天前
|
存储 算法 程序员
C语言:库函数
C语言的库函数是预定义的函数,用于执行常见的编程任务,如输入输出、字符串处理、数学运算等。使用库函数可以简化编程工作,提高开发效率。C标准库提供了丰富的函数,满足各种需求。
|
30天前
|
存储 C语言
【c语言】字符串函数和内存函数
本文介绍了C语言中常用的字符串函数和内存函数,包括`strlen`、`strcpy`、`strcat`、`strcmp`、`strstr`、`strncpy`、`strncat`、`strncmp`、`strtok`、`memcpy`、`memmove`和`memset`等函数的使用方法及模拟实现。文章详细讲解了每个函数的功能、参数、返回值,并提供了具体的代码示例,帮助读者更好地理解和掌握这些函数的应用。
25 0
|
30天前
|
C语言
【c语言】qsort函数及泛型冒泡排序的模拟实现
本文介绍了C语言中的`qsort`函数及其背后的回调函数概念。`qsort`函数用于对任意类型的数据进行排序,其核心在于通过函数指针调用用户自定义的比较函数。文章还详细讲解了如何实现一个泛型冒泡排序,包括比较函数、交换函数和排序函数的编写,并展示了完整的代码示例。最后,通过实际运行验证了排序的正确性,展示了泛型编程的优势。
21 0
|
5月前
|
程序员 C语言 C++
【C语言基础】:动态内存管理(含经典笔试题分析)-2
【C语言基础】:动态内存管理(含经典笔试题分析)
|
5月前
|
程序员 编译器 C语言
【C语言基础】:动态内存管理(含经典笔试题分析)-1
【C语言基础】:动态内存管理(含经典笔试题分析)
|
Java 数据库连接 C语言
C语言进阶教程(内存分配常见问题分析)
C语言进阶教程(内存分配常见问题分析)
72 0
|
存储 缓存 算法
C语言内存问题详细分析之完善
C语言内存问题详细分析之完善
123 0
C语言内存问题详细分析之完善
下一篇
无影云桌面