C语言中与内存操作有关的一些函数

本文介绍了C语言中内存操作的关键概念,包括malloc用于动态内存分配,memcpy、memccpy用于数据复制,memmove处理内存重叠,memset设置内存值,memcmp比较内存内容,以及memchr查找字符。这些函数在C编程中至关重要。
摘要由CSDN通过智能技术生成

前提

最近在使用C语言在开发项目时,要对内存进行操作。刚开始写的时候有一点迷糊,看了一些东西后才发现为什么说指针是C语言的灵魂,因为它可以对内存直接进行操作,多么帅的事情,真的是太帅了。

malloc

声明在头文件<stdlib.h>中。
函数定义:
void *malloc(size_t size)

函数说明:分配size个字节的未初始化内存。如果分配成功,则返回一个指针,该指针适合任何具有基本对齐方式的对象类型(可以强制类型转换为任何具有基本对齐方式的对象类型)。如果分配失败,则返回null指针。

一般使用:int* ptr = (int *)malloc(100 * sizeof(int)),申请100个int的空间。

memcpy

函数定义:
在这里插入图片描述
src处copycount个字节到dest处,输入的指针会被强转为void *,如果是memcpy_s的话,destszdest处可用的字节大小。memcpy_s是从C11才使用的,它要比memcpy更安全,成功返回0,失败则返回非0。它可以处理以下集中情况:

  • dest或者src是一个空指针
  • destsz或者countRSIZE_MAX
  • countdestsz大(发生溢出)
  • srcdest的内存重叠

一般使用:memcpy(dst, src, 3*sizeof(int))

memccpy

在这里插入图片描述
将内存区域从源地址复制到目标地址,直到遇到指定的字符c或者复制了指定的字节数count时停止

memmove

函数定义:
在这里插入图片描述
memcpy类似,但能正确处理src内存区域和dest内存区域重叠的情况。如果发生重叠:先将数据copy到一个临时空间
一个例子如下:

char str[] = "1234567890";
puts(str);
memmove(str+4, str+3, 3); // copy from [4,5,6] to [5,6,7]

memset

在这里插入图片描述
将一块内存区域的每个字节都设置为指定的值。ch为要设置的值,以整数形式给出,但通常使用unsigned char类型的值。这个值会被强制转换为unsigned char类型,然后被复制到内存区域中的每个字节。count为要设置的字节数。

memcmp

在这里插入图片描述
用于比较两块内存区域的内容, count为要比比较的字节数。如果相等返回0,lhs>rhs返回正数,lhs<rhs返回负数。谁大谁小是按照字典顺序比较的。

memchr

在这里插入图片描述
找到(unsigned char)ch在制定内存中第一次出现的位置。如果找到了,则返回指向该字符的指针,如果未找到,则返回一个空指针。
一个用例:

char str[] = "abcdefg";
char *result;

// 在str中搜索字符 'd'
result = (char *)memchr(str, 'd', strlen(str));

参考链接

  1. https://devdocs.io/c/string/byte/memccpy
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值