C/C++复习(持续更新)
最佳答案 问答题库628位专家为你答疑解惑
深入理解程序从编译到运行_程序编译与运行-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; // 严重的错误
创建一个指针时,系统只分配了存储指针本身的内存,并未分配存储数据的内存。
99%的人还看了
相似问题
- JVM:字节码文件,类的生命周期,类加载器
- 网工内推 | 字节原厂,正式编,网络工程师,最高30K*15薪
- Go 以小端字节序修改文件
- UDP端口接收到的字节流如何转为QJsonObject、QJsonArray的方法
- 《2020年最新面经》—字节跳动Java社招面试题
- 计算Qt中的QAudioOutput缓冲区未播放的音频字节数对应时长
- 字节面试:请说一下DDD的流程,用电商系统为场景
- 深入理解JVM虚拟机第二十一篇:详解JVM当中的操作数在栈以及分析操作数栈与字节码指令和执行引擎的关系图解
- 【Linux网络编程_TCP/UDP_字节序_套接字 实现: FTP 项目_局域网聊天项目 (已开源) 】.md updata:23/11/05
- 【项目源码】反编译Java字节码生成源码
猜你感兴趣
版权申明
本文"C/C++复习(持续更新)":http://eshow365.cn/6-36093-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!