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

memset与strcpy区别

strcpy是“拷贝字符串”,memset是“按字节填充内存”。

strcpy:复制字符串

函数原型是:

char *strcpy(char *dest, const char *src);

作用:把src字符串复制到dest里面,包括最后的\0

例子:

#include <stdio.h> #include <string.h> int main() { char arr[20]; strcpy(arr, "hello"); printf("%s\n", arr); return 0; }

结果:

hello

这里arr里面实际存的是:

'h' 'e' 'l' 'l' 'o' '\0'

所以strcpy适合处理字符串

memset:把一块内存全部设置成某个字节

函数原型大概是:

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

作用:从ptr开始,把后面num个字节都设置成value

例子:

#include <stdio.h> #include <string.h> int main() { char arr[20]; memset(arr, 0, sizeof(arr)); return 0; }

这句的意思是:

memset(arr, 0, sizeof(arr));

arr这 20 个字节全部清零。

所以memset常用于:

memset(arr, 0, sizeof(arr)); // 清空字符数组 memset(buf, 0, sizeof(buf)); // 清空缓冲区 memset(dp, -1, sizeof(dp)); // 算法里初始化数组为 -1

3. 最大区别

对比

strcpy

memset

作用

复制字符串

填充内存

处理对象

字符串

任意内存

是否关心\0

关心,遇到\0停止

不关心,按字节数量填

第三个参数

没有

填多少个字节

常见用途

"hello"拷贝进数组

清零、初始化数组


4. 对比例子:很关键

strcpy

char arr[20]; strcpy(arr, "abc");

结果类似:

arr: a b c \0 ? ? ? ? ...

它只复制"abc"和最后的\0


memset

char arr[20]; memset(arr, 'A', sizeof(arr));

结果是:

arr: A A A A A A A A A A A A A A A A A A A A

它不管字符串结束符,只负责填 20 个字节。

如果你这时候:

printf("%s\n", arr);

可能出问题,因为里面没有\0,它不知道字符串在哪里结束。

memset(arr, 0, sizeof(arr))为什么常见?

因为字符数组清零之后,全是:

'\0' '\0' '\0' '\0' ...

这时候它天然就是一个空字符串。

char arr[20]; memset(arr, 0, sizeof(arr)); printf("%s\n", arr);

输出为空,不会乱跑。

memset是按字节填

这个要特别注意 ⚠️

int arr[10]; memset(arr, 1, sizeof(arr));

你可能以为每个 int 都变成1,但不是。

因为memset是按字节填充,把每一个字节都填成0x01

一个int通常 4 字节,所以每个 int 变成:

0x01010101

十进制是:

16843009

所以初始化int数组时:

memset(arr, 0, sizeof(arr)); // 可以 memset(arr, -1, sizeof(arr)); // 通常可以 memset(arr, 1, sizeof(arr)); // 不建议,结果不是每个元素为 1
strcpy:string copy,字符串复制 memset:memory set,内存设置

更直观一点:

strcpy(arr, "hello");

意思是:

把 hello 这个字符串放进 arr
memset(arr, 0, sizeof(arr));

意思是:

把 arr 这块内存全部刷成 0

最常用搭配就是:

char arr[100]; memset(arr, 0, sizeof(arr)); // 先清空 strcpy(arr, "hello"); // 再放字符串
http://www.rkmt.cn/news/1534815.html

相关文章:

  • 2026年最新微软官方全国售后网点地址更新报告 - GrowthUME
  • 平顶山好吃的火锅推荐榜单!平顶山火锅推荐榜本土标杆
  • Python岗25 年高频面试题
  • Gemini 3.5 Flash国内接入实战:直连误区、代理方案与成本优化
  • 百考通AI技术:精准贴合不同场景的调研需求,让问卷设计从“耗时耗力”到“一键生成”的高效赋能
  • 一氧化碳分析仪/二氧化碳浓度检测仪怎么选?西安诺科仪器领跑国产替代 - 品牌推荐大师1
  • 唐山GEO优化找哪家公司靠谱?
  • Windows凭据安全:从DPAPI原理到mimikyu攻击的攻防实战
  • 边缘 AI 推理框架:从 TFLite Micro 到 NCNN 的嵌入式部署实战
  • 稠密向量技术全解析:从Embedding原理到Faiss向量检索实战
  • 2026 年 6 月沈阳黄金回收攻略,正规门店零隐形扣费 - 讯息早知道
  • multi-theft-auto-server-20260522
  • 从手动刷新到智能抢票:基于Selenium的大麦网自动化购票方案解析
  • 实时系统任务调度:从优先级反转处理到死锁预防
  • 2026中卫本地防雷检测哪家专业?TOP 正规机构榜单 + 防雷装置 + 接地电阻 + SPD 检测 附电话地址 - 中安检测集团
  • 比特彗星命令行完全指南:种子制作、RSS自动订阅与批量下载的脚本化实践
  • 空列表不是空的:Python中被低估的核心基础设施
  • GEO服务商选型指南:2026年品牌AI搜索优化决策框架
  • Docmost:开源团队知识库部署教程,支持实时协作的 Notion 替代
  • 2026嘉善|加急非标紧固件定制快速交货 - 年度推荐企业名录
  • Replit Agent:自然语言驱动的端到端AI开发引擎
  • 驻马店防水补漏哪家好?2026 优质榜单出炉,屋顶暗管漏水、飘窗地下室渗水、瓷砖空鼓修补专业防水公司推荐 - 泛家庭维修
  • 2026景德镇黄金回收实测 靠谱门店与避坑指南 - 润富黄金回收
  • ViGEmBus虚拟手柄驱动:3步实现Windows游戏控制器完美兼容的终极方案
  • AMD推本地AI新机,2350亿参数离线跑
  • 打破60帧束缚:用开源工具解锁《原神》流畅新境界
  • Lumafly:空洞骑士模组管理的终极解决方案,轻松管理300+模组
  • 阴阳师自动化脚本百鬼夜行智能控制终极指南:从零到精通的完整路径
  • 挽回80万损失!进出口报关公司哪家好实战解析 - 热点速览
  • 如何快速掌握大麦网自动抢票神器:3倍成功率实战指南