- 博客(3)
- 收藏
- 关注
原创 strcpy sprintf memcpy 区别详解
何时用strcpy?仅用于已知安全长度的字符串拷贝。永远不要对用户输入或未知长度的字符串直接使用strcpy。应使用并手动设置,或使用其他安全函数。何时用sprintf?当需要将数字、其他变量与文本组合成一个字符串时(如生成日志信息、路径、SQL语句等)。始终优先使用snprintf来指定缓冲区大小,例如。何时用memcpy?当需要复制非字符串数据时,如数组、结构体、网络数据包等。当需要高性能的内存复制,且源和目标内存不重叠时。即使是拷贝字符串,如果已知确切长度且追求极致性能,也可以使用。
2026-07-23 14:00:33
310
原创 数组名与指针的本质区别
场景建议需要知道数据集合大小使用数组(或结构体包含数组),以便利用sizeof在定义域内获取完整大小。需要动态内存分配或重指向使用指针,配合mallocfree。函数参数传递“数组”实际上总是传递指针。同时传递数组长度作为另一个参数。可以使用int arr[]或int *arr声明形参,前者更具可读性。需要遍历元素两者皆可。for(i=0;i<len;或for(p=arr;p<arr+len;p++)。前者通常更清晰。定义字符串常量若不需修改,使用。若需修改,使用。根本区别记忆口诀:数组名是地址常量。
2026-07-23 10:02:02
290
原创 typedef与define的本质区别
这是最能体现两者区别的场景之一。// 展开: char * pDef1, pDef2;只有pDef1是指针!// pTyp1和pTyp2都是char*类型。// 验证// 正确// 错误!pDef2是char类型,不能赋指针值。#define传统上用于定义常量,但现代C/C++更推荐使用const变量或constexpr(C++),因为它们有类型和作用域。// 更好,有类型和作用域,且可能被编译器优化。// #define 定义的常量可用于数组大小等编译时常量场合(C语言)
2026-07-22 17:24:10
551
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅