c++ day3 指针,栈内存,堆内存

指针

在c++中指针就是 内存地址 (十六进制的数据), 它记录着内存空间的地址, 大小是8个字节

指针的定义:
int a = 10;
int *pint;
pint = &a;

// 也可以
int *pint = &a;

其中 pint 指针变量储存的就是 a变量在内存中的地址, 可以通过*pint 解引用来效果 变量a 的值

*pint = 20;

正常来说 pint 指针变量可以直接 使用pint, 但是, 直接使用的是内存地址,所以,通过解引用,*pint 来修改变量 a 的值,注意, 不能对空指针解引用, 因为空指针什么都没指向。

指针类型

指针也是有数据类型的, 获取int类型的变量的指针使用 int 来 定义指针,string 就用string 如:


int a = 10;
int *pint = &a;

string b= "aaa";
string *pstring = &b;

如果指针类型和要获取指针的变量类型不一样会产生异常的

指针初始化
int a = 10;
int *pint;

如上,定义一个pint指针, 如果没有在定义的时候给它数据的话就会随机指向一块内存地址,所以 ,如果定义的时候不赋值的话就该 将指针设置为空指针,

int *pint = nullptr;

栈内存

c++中由程序自动向操作系统申请的内存就是栈内存,,它有自己的gc回收, 如, 在函数中定义的局部变量就是使用栈内存,当函数执行完毕后会自动的释放内存,不需要程序员管理

堆内存

在程序中需要new 创建出来的变量就是使用堆内存, 这些内存需要程序员手动创建和回收, 不像堆内存的变量,程序结束会自动回收,可以跨函数, 不像堆内存的数据,程序结束就回收了, 需记得每一个new 都要 delete ,不然会造成内存的泄漏;

动态内存创建
int a = new int(10);

申请内存空间类型要和数据类型一致

内联函数,

inline , 当函数的代码较少的时候可以使用inline 在其他函数中调用该函数的时候相当于 将整个函数体的代码插人调用语句处,就像整个函数体在调用处被重写了一遍一样, 这样的好处在于不会产生额外调用函数的开销, 不会产生压栈,弹栈开销

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值