C++指针

指针是储存变量的地址。

在指针中储存地址

每个变量都有自己的地址。即使不知道所给的变量的地址,你也能够在之阵中储存该地址。

例如:int *pAge = 0;

这条语句生命pAge是一个只想整型量的指针。也就是说,pAge被声明为保存一个整型量的地址。

注意pAge是一个变量。当你声明整型变量int型时,它被设置成保存整型量。

在这个例子中pAge被初始化为0,值为0的指针我们称之为空指针。所有的指针在定义时都应该初始化。如果你不知道自己想给指针赋什么值,那就赋为0。没有初始化的指针我们称之为失控指针,这是非常危险的。

注意:一定要对指针初始化

必须把howOld = 50 的地址赋给pAge:

unsigned short int howOld = 50;

unsigned short int *pAge = &howOld;

间接引用运算符

运算符(*)也被称为间接引用运算符。当一个指针被简介引用时,就读取其所保存的地址处的值。普通变量可以直接访问他们的值。如果你新创建了一个名 为yourAge的无符号短整型变量,并且希望把howOld的值赋给这个新变量,你可以这样写:

unsigned short int yourAge;

yourAge=howOld;

指针提供了对变量值的间接访问,指针保存该变量的地址。通过以下语句,你可以使用指针pAge把howOld的值赋给新变量。

unsigned short int youAge;

yourAge = *pAge;

变量pAge前面的间接引用运算符(*)的含义是:“储存在此地址处的值”。这条赋值语句的含义:“把储存在pAge中的地址处的值赋给yourAge”。

new

在C++中使用关键字new分配自由存储区的内存。在new之后是一个你希望分配的对象的类型,这样编译器就知道需要多大的内存。因此,new unsigned short int 在自由存储区中分配了两字节的空间,而new unsigned long 则分配四字节的空间。

new的返回值是内存的地址。他必须被赋给一个指针。要在自由存储区第一一个unsigned short型的变量,可以这样编写代码。

unsigned short int *pPointer;

pPointer = new unsigned short int ; 

当然也允许在定义指针时对他进行初始化

unsigned short int *pPointer = new unsigned short int ;

在两种情况下,pPointer只想自由存储区中的一个unsigned short int 型内存。你可以向其他指向变量的指针一样使用他,并把一个值赋给他所指向的内存空间。*pPointer = 72;

delete

当你不再需要一块内存空间时,必须对指向它的指针使用关键字delete。它的作用是释放内存,把他交还给自由存储区,你一定要记住,与所指向的内存区域不同,指针本身是一个局部变量。当声明指针的函数返回时,指针的作用域也就结束了,因此被丢弃了。然而,使用关键字new分配的内存不会被自动释放,于是这块内存不能由其他数据使用。这种情况我们被称之为内存泄漏。这种情况被称为内存泄漏是因为直到程序结束内存才能够恢复使用,就好像计算机丢掉了这一块内存。要把内存释放给自由存储区,使用关键字delete。

访问数据成员

在前面提到的对于局部的Cat类对象通过成员运算符“.”访问它的数据成员和函数。必须先对指向此对象的指针进行间接引用,然后使用成员运算符。因此要访问成员函数GetAge,可以使用以下语句:

(*pRags).GetAge();

使用括号是为了保证在访问GetAge()之前对pRags进行间接引用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值