C++ 指针 (普通指针) 基础详解

本文参考资料来源于 <Professional C++, 4th Edtition>

如果不是你想看的内容, 推荐查看 C++指针目录

C++ 中, 指针是一个很常用的工具, 就来介绍一下

平常, 我们声明一个局部变量是这样子:

void f()
{
  int
x=0;
}

它在内存中的状态如图:

 

 

 

如果我们要将 x 在堆栈中, 指向堆中的内存, 就是指针

void f()
{
    int *x= new int;
}

这时候 x 虽然在堆栈中, 却指向堆的内存

 

 

 

指向的内存如果这个函数结束了怎么办? 这块内存难道就扔在那里了?

当然不! 我们需要的是释放内存

 

1 void f()
2 {   
3     int *x=new int;
4     delete x;
5     x=nullptr;//置空
6 }

 

在第四行, 我们释放了 x 的内存, 而 x 就没用了, 就应该把它置空

 

 

 

当一个指针指向一个变量的内存地址时, 这个指针的值为当前指向的变量的地址

而如果想得到指针指向的变量的值时, 需要加上 ' * ':

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int x=10;
 6     int *pointer=&x;//指向x的地址
 7     cout<<pointer<<endl;//这里输出的是pointer指向x的地址
 8     cout<<*pointer<<endl;//这里才是pointer指向x, x的值
 9     *pointer=20;//这里是将x与*pointer赋值为20
10     cout<<x<<' '<<*pointer<<endl;
11     return 0;
12 }

输出:

1 0x104dfeec
2 10
3 20 20

这种关系类似引用

指针的处理复杂, 需要一段时间消化

 如果可以消化, 请看: 指针与一维数组 或者 智能指针unique_ptr

 推荐查看 C++指针目录

转载于:https://www.cnblogs.com/tweechalice/p/11436121.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值