当前位置: 首页 > news >正文

016-C语言内存函数

C语言内存函数

文章目录

  • C语言内存函数
    • 1. memcpy
    • 2. memmove
    • 3. memset
    • 4. memcmp

注意: 使用这些函数需要包含 string.h头文件。

1. memcpy

void * memcpy ( void * destination, const void * source, size_t num );
  • source指向的位置开始,向后复制num个字节的内容到destination中。
  • 复制过程中,不在乎内容是什么,无论是什么内容都是照搬。
  • destinationsource指向的空间中有任何的重叠部分,那么它们复制的结果都是未定义的。
  • 需要注意的是,在拷贝字符串时,如果拷贝的内容最后一个位置不是\0,最好在拷贝结束后加上\0,否则后期可能造成越界访问。
#include <stdio.h>
#include <string.h>int main()
{char* s1 = "hello memcpy";char s2[50];memcpy(s2, s1, ((strlen(s1) + 1) * sizeof(s1[0])));printf("%s\n", s2);return 0;
}

在这里插入图片描述

2. memmove

void * memmove ( void * destination, const void * source, size_t num );
  • memcpy不同的是memmovedestinationsource指向的部分是可以重叠的。
#include <stdio.h>
#include <string.h>int main()
{char s1[100] = "hello memmove 123456789";memcpy(s1 + 14, s1, 13 * sizeof(s1[0]));printf("%s\n", s1);return 0;
}

在这里插入图片描述

3. memset

void * memset ( void * ptr, int value, size_t num );
  • ptr指向的内存的num个字节的内存全部设置成value
#include <stdio.h>
#include <string.h>int main()
{char s1[100] = "hello memset";memset(s1, 'C', 3);printf("%s\n", s1);return 0;
}

在这里插入图片描述

4. memcmp

int memcmp ( const void * ptr1, const void * ptr2, size_t num );
  • 比较ptr1ptr2指向的位置开始,向后的num个字节的内容。
  • 如果ptr1指向的内容小于ptr2指向的内容,则返回值<0
  • 如果ptr1指向的内容等于ptr2指向的内容,则返回值==0
  • 如果ptr1指向的内容大于ptr2指向的内容,则返回值>0
#include <stdio.h>
#include <string.h>int main()
{char s1[] = "123456789";char s2[] = "234567890";printf("%d\n", memcmp(s1, s2, 5 * sizeof(char)));return 0;
}

在这里插入图片描述

相关文章:

  • 【HarmonyOS 5】VisionKit人脸活体检测详解
  • 【特殊场景应对3】创意岗简历骚操作:作品集链接的正确打开方式
  • 【Vue】组件通信(Props/Emit、EventBus、Provide/Inject)
  • keil5烧录后No Debug
  • (三)mac中Grafana监控Linux上的Redis(Redis_exporter安装使用)
  • 在win上安装Ubuntu安装Anaconda(linx环境)
  • 6.数据手册解读—运算放大器(三)
  • LeetCode hot 100—分割等和子集
  • 在 Node.js 中设置响应的 MIME 类型
  • RenderStage::drawInner
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.3.23)
  • 计算机网络综合实验指南
  • 大模型安全吗?数据泄露与AI伦理的黑暗面!
  • ModuleNotFoundError: No module named ‘vllm.lora.peft_helper‘原因和解决方式
  • C++进阶-多态
  • 【C++ 程序设计】实战:C++ 实践练习题(31~40)
  • sort自定义排序函数tips【C++】
  • 维普期刊(瑞数6)分析
  • Android开发中广播(Broadcast)技术详解
  • rag搭建,是如何进行向量匹配检索的?
  • 最高法报告点名“夜郎古酒”商标侵权案:促成当事人握手言和
  • 世界读书日丨这50本书,商务印书馆推荐给教师
  • 央行等:在上海试点通过再贴现窗口支持人民币跨境贸易融资
  • 占比超1/3,江苏何以连续多年霸榜“千亿县”?
  • 85岁眼科专家、武汉大学人民医院原眼科主任喻长泰逝世
  • 西安旅游:2024年营业收入约5.82亿元,同比增长5.88%