当前位置: 首页 > 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;
}

在这里插入图片描述

http://www.xdnf.cn/news/51625.html

相关文章:

  • 每日一题算法——链表相交
  • git学习日志
  • Java EE(20)——线程安全——ThreadLocal
  • 第36讲:作物生长预测中的时间序列建模(LSTM等)
  • buildroot构建根文件系统报错(已解决大部分问题)
  • Linux学习——Linux进程间通信(IPC)聊天程序实践
  • Android开发中广播(Broadcast)技术详解
  • 线程基础题
  • FOC控制中的正弦PWM和空间矢量PWM对比与理解
  • 【计量地理学】实验五 试验变异函数计算
  • 软件设计师/系统架构师---计算机网络
  • Python爬虫实战:获取fenbi网最新备考资讯
  • 机器学习专栏(4):从数据饥荒到模型失控,破解AI训练的七大生死劫
  • SpringBoot Actuator健康检查:自定义HealthIndicator
  • Java 8 date/time type `java.time.LocalDateTime`
  • FreeRTOS中断管理
  • LangChain4j对话内存管理:ChatMemory原理与实战应用
  • 【深度学习与大模型基础】第12章-损失函数与梯度下降
  • 高等数学同步测试卷 同济7版 试卷部分 上 做题记录 上册期中同步测试卷 B卷
  • 相对路径和绝对路径解析
  • windows下配置Ninja
  • 算法笔记—动态规划
  • Multisim使用教程详尽版--(2025最新版)
  • B树的异常恢复
  • pivot_root:原理、用途及最简单 Demo
  • 项目预期管理:超越甘特图,实现客户价值交付
  • 协程?协程与线程的区别?Java是否支持协程?
  • The_Planets_Earth靶场笔记(VulnHub)
  • 第一章,HCIA复习
  • 人形机器人马拉松:北京何以孕育“领跑者”?