浅谈C++指针变量

指针

概述

指针:也就是内存地址。
指针变量: 也就是用来存放内存地址的变量
不同类型的指针变量所占用的存储单元的长度是相同的,由于指针变量类型的不同,则所占的存储空间长度会有所不同。

指针与地址

指针:指针相对于一个内存单元来说,就是这个单元的地址。一个指针变量就是某个内存单元的地址,而内存单元中存放着数据。

野指针

野指针:就是指针指向的位置是不可知的(随机的、不正确的、没有限制的)。野指针不能对其直接进行赋值。

   int *p;        //没有开辟空间,只是一个野指针
  *p = 10;       //因为p是野指针,所以不能直接对其赋值
 //此时程序会报错

在这里插入图片描述

对指针进行赋值

   int a = 1;
   int b = 2;

   int *c = &a;
   int *d = &b;

   cout << "a = " << a <<"  " << "b = " << b << endl;
   cout << "*c = " << *c <<"  " << "*d = " << *d << endl;

编译输出结果如下:
在这里插入图片描述

通过new来申请空间

语法: Type 变量 = new Type
例: int *p = new int;
使用new来申请的空间,需要使用delete来释放。
当然也可以使用C语言中的malloc()来申请空间 free()来释放,同时也可以混合使用,如:new()申请空间 free()来释放(我不建议这样做)。
使用delete只是回收了变量申请的空间,但是这个指针变量任然存在,将变为一个野指针,所以需要将这个指针变量赋值NULL

 int *p = new int;//如果使用new来申请空间,但是没有使用delete来释放,会造成资源浪费
 *p = 10;
 cout << "*p = " << *p << endl;
 delete p;       //使用new申请的空间,需要使用delete来是释放,p指针指向的内存空间被delete回收,p变为野指针,   
 cout << " *p = NULL前 "<<"*p = " << *p << endl;
 *p = NULL;
 cout << " *p = NULL后 "<<"*p = " << *p << endl;

在这里插入图片描述

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读