C/C++复习(持续更新)

编程入门 行业动态 更新时间:2024-10-18 19:25:34

C/C++复习(持续更新)

C/C++复习(持续更新)

深入理解程序从编译到运行_程序编译与运行-CSDN博客

1. sizeof() 运算符,不是函数,在编译时确定其值,  计算出x在内存中所占字节数,返回 size_t 类型。

char c='a' 与 'a',c是1字节的字符变量, 但'a'是占4字节的整形常量;
char *c,  c是地址, 指向的数据按1字节读取, 但c本身是指针类型, 无符号整型(u32), 用4字节存放的地址值;
字节对齐,  内存为了高速地处理数据, 每次按32位读写, 数据存放时地址自动调整在能被对齐字节数整除的位置.


printf("%ld", sizeof("abc");  // 结果:4,双引号会在尾部自动添加转义字符'\0',即数据0X00, 所以是4   // 双引号作用: (1)字符串尾部加0, (2)开辟内存空间, (3)提取地址// 字节对齐,为快速处理数据,内存是按32位读取写的,而不是一字节一字节地读写
// 结构体的首地址自动对齐至能被对齐字节数大小所整除。
// 结构体每个成员在结构体内的偏移地址都是成员大小的整数倍,否则, 在前方填充byte。
// 结构体的总大小为结构体对齐字节数大小的整数倍struct T1{int   a;                  // 成员随意位置char  b;int   c;short d;
}t1;
printf("%ld", sizeof(t1);     // 结果:16, 4+4+4+4struct T2{int   a;                  // 合理安排成员位置char  b;short d;int   c;
}t2;
printf("%ld", sizeof(t2);     // 结果:12, 4+4+4, 设计结构时,调整成员的位置,可节省存储空间。// 小心, 函数不执行
char Sum(int i, short s);
printf("%ld", sizeof(Hellow(32, 8));  // 结果:1, 只会判断返回类型的大小. 函数是不会执行的! 

2. wild pointer(野指针)

野指针指的是未初始化的指针,这个指针指向一个随机的内存地址,如果直接访问野指针可能导致程序崩溃。

3. 左值和右值

左值指既能够出现在等号左边,也能出现在等号右边的变量;右值则是只能出现在等号右边的变量。

  • 左值是可寻址的变量,有持久性;
  • 右值一般是不可寻址的常量,或在表达式求值过程中创建的无名临时对象,短暂性的。

左值和右值主要的区别之一是左值可以被修改,而右值不能。

左值引用和右值引用:

  • 左值引用:引用一个对象;
  • 右值引用:就是必须绑定到右值的引用,C++11中右值引用可以实现“移动语义”,通过 && 获得右值引用。
int x = 6; // x是左值,6是右值
int &y = x; // 左值引用,y引用xint &z1 = x * 6; // 错误,x*6是一个右值
const int &z2 =  x * 6; // 正确,可以将一个const引用绑定到一个右值int &&z3 = x * 6; // 正确,右值引用
int &&z4 = x; // 错误,x是一个左值

右值引用和相关的移动语义是C++11标准中引入的最强大的特性之一,通过std::move()可以避免无谓的复制,提高程序性能。

4. 字符缓冲区

缓冲分为两类:完全缓冲I/O行缓冲I/O。

完全缓冲I/O:当缓冲区被填满时才刷新缓冲区,通常出现在文件输入中,缓冲区的大小为512B或4096。

行缓冲I/O:在出现换行符时才刷新缓冲区。键盘输入通常是行缓冲输入。

无缓冲:输入立即被反馈到输出中,比如在游戏中需要快速反应。

5. 实参和形参

实参为主调用函数提供给被调函数的参数;形参则是被调函数中的参数。

6. 不能解引用未初始化的指针

ptr 未初始化,其值是一个随机值,所以不知道 5 会存储在何处,这种操作可能什么都不会发生,也可能擦除数据或代码,或导致持续崩溃。 

int *ptr;  // 未初始化的指针
*ptr = 5;  // 严重的错误

创建一个指针时,系统只分配了存储指针本身的内存,并未分配存储数据的内存。

更多推荐

C/C++复习(持续更新)

本文发布于:2023-11-15 19:36:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1605149.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!