XuQi's Blog

  • 首页

  • 归档

c++基础知识总结

发表于 2019-09-17 更新于 2019-10-20

C++基础知识

指针和引用的区别

  • 是否分配空间
  • 是否需要初始化
  • 是否支持多级
  • 是否可以支持++
  • sizeof的大小
  • 引用是直接访问变量,指针是间接访问
  • 指针需要做类型检查
  • 引用底层是通过指针实现的
  • 作为参数时,引用是传地址,指针实质上是传地址

从汇编层去解释一下引用

1
2
3
4
5
1.	9:          int x = 1;
2. 00401048 mov dword ptr [ebp-4],1
3. 10: int &b = x;
4. 0040104F lea eax,[ebp-4]
5. 00401052 mov dword ptr [ebp-8],eax

lea eax,[ebp-4] 这条语句将x的地址ebp-4放入eax寄存器mov dword ptr [ebp-8],eax 这条语句将eax的值放入b的地址ebp-8中,作用即:将x的地址存入变量b中,所以从汇编层次来看,的确引用是通过指针来实现的。

指针参数传递和引用参数传递

  • 指针传参,实质上是值传递,被调函数的形参会被当做局部变量,在栈中开辟空间,不会影响主调函数的实参。
  • 引用参数,形参也开辟了空间,但存放的是主调函数实参变量的地址。被调函数的对行参操作,实际上是间接寻址。
  • 从编译角度,程序编译的时候,分别将指针和引用添加到了符号表上,符号表记入了变量名和变量所对应的地址。指针变量在符号表对应的地址值,为指针变量的地址,所以可以改变。而引用在符号表对应地址值为引用对象的地址。符号表生成后就不能再改变,所以引用的对象不能修改。

形参和实参的区别

  • 分配内存的生命周期

static的用法和作用

静态变量什么时候初始化

# C++
Telematics-Box
hostapd_dhcpd
  • 文章目录
  • 站点概览

XuQi

44 日志
30 标签
  1. 1. C++基础知识
    1. 1.1. 指针和引用的区别
    2. 1.2. 从汇编层去解释一下引用
    3. 1.3. 指针参数传递和引用参数传递
    4. 1.4. 形参和实参的区别
    5. 1.5. static的用法和作用
    6. 1.6. 静态变量什么时候初始化
© 2019 XuQi
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Muse v7.3.0