今天主要学习了内存函数,以及结构体
1、memcpy:void memcpy(void dest,const void src,size_t num);将src的内存处内容拷贝num个字节到dest的内存中去,不能为重叠拷贝。遇到\0不会停下来。
2、memmove:memmove():重叠拷贝,参数及返回类型和上面一样,是拷贝具有重叠的数据。拷贝的单位为字节。
3、memcmp:memcmp(const void
dest,const void src,size_t num):比较dest和src指向的内容一对一比较num个字节。
4、memset:memset(void
dest,int c,int count)内存设置,将dest指向的数据的count个字节内容改为c。
内存函数主要需要注意一点,其操作的大小都为字节。
结构体
定义及初始化
struct stu
{
char c;
int a;
char arr[];
struct S s;
};这是定义
struct stu s={'a',10,"hello world",{}};这是初始化。
结构体大小求法
首先得明白结构体内存对齐
对齐规则
1、第一个成员存储在偏移量为0的地址处。
2、其他的成员存储在对齐数整数倍的地址处。
对齐数求法
为编译器默认值和成员数据大小中的较小值。
3、结构体大小为其成员最大对齐数的整数倍。
4、如果结构体嵌套了其他的结构体,嵌套的结构体对齐到其内部成员最大的对齐数的整数倍,结构体整体大小为整体对齐数的整数倍。
#pragma pack(4);设置默认对齐数为4.
#pragma pack();取消设置的默认对齐数。
offsetof(结构体名,成员名)求成员偏移量。
结构体传参应该尽量传地址。

©著作权归作者所有:来自51CTO博客作者我要进大厂的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 注册中心 Eureka 源码解析 —— 项目结构简介
  2. Redis 哈希结构内存模型剖析
  3. 从一份定义文件详解ELK中Logstash插件结构
  4. SpringBoot 中 @SpringBootApplication注解背后的三体结构探秘
  5. 数据结构之集合和映射
  6. HCIA-以太网帧结构-OSI模型
  7. C语言 循环结构和选择结构(1)
  8. 如何更好地结构化表示一个 URL?
  9. 带你一步步设置layui的tree树结构点击高亮

随机推荐

  1. c语言函数调用例子
  2. c语言的文件存取方式只能是顺序存取?
  3. c语言打印菱形
  4. c++异常处理的方法
  5. 格式化代码是什么意思
  6. c++类型转换
  7. .net是什么语言 视频
  8. 按位取反运算符的使用
  9. c++基础知识
  10. .net core和.net区别