C++指针的个人理解

1.地址访问

指针访问使用运算符“*”,指针变量指向数据存放的地址,cpu决定了内存的寻址方式,所以,不管什么类型,指针本身的规格都一样。例如,16位或32位整数。关联类型的作用是控制和解释对象的访问。

如果一个指针变量关联类型为int,则通过指针变量访问对象时,读取从指针值指示的位置开始的连续4个字节,并按整型数据解释。

例如:

int a = 10;
int * p1;
p1 = & a;  // 把a的地址写入指针变量p1  p1指向a

用*p1的这种访问方式成为间址访问。

指针p1占用一定的存储空间,在未指定地址的时候,p1所指向的内容为空。

2.引用

C++允许为对象定义别名,称为引用。定义方式:
类型 &引用名 = 对象名;
例如:
#include<iostream>
using namespace std;
int main(){
	int a = 2;
	int * pa;
	int & ra = a;
	pa = & a;
	cout << a << '\t' << ra << '\t' << * pa << endl;  //输出a的值 
	cout << & a <<'\t'<< & ra <<'\t'<<pa<< endl;      //输出a的地址值 
	cout << & pa <<endl; 									  //输出指针pa的地址值 
	return 0;
}
ra的类型为int,与a不同之处只有变量名。一个对象的别名,在使用方式和效果上,与使用对象名一致。

3.常量和约束访问

3.1指向常量的指针 

用const约束指针对所指对象访问时,这个指针称为指向常量的指针。指向常量的指针指针变量可以获取变量或常量的地址,但限制用指针间址访问对象方式为“只读”。
const 类型 *指针

3.2指针常量 

指针变量的值智能在定义的时候初始化,定以后不能修改,即不能改变指针变量的指向。但不影响所指向对象的访问特性。const写在指针变量之前,表示只约束指针变量本身。
类型 *const 指针
例如:
int var1 = 100,var2 = 200;
int * const p1 = & var1;
*p1 = var2;
p1 = &var2;    //错误,不能修改指针常量

注意:指针常量不能指向标示常量,因为指针常量仅仅约束指针值为只读,并没有约束间址访问对象,不能用一个无约束间址访问的指针获取标示常量的地址。

3.3指向常量的指针常量 

指针本身和所指对象的值在定义之后都限制为只读。
const 类型 * const 指针

3.4常引用

冠以const定义的引用,将约束对象用别名访问时为只读。
const 类型 & 引用名 = 对象名;

4.动态存储

4.1 new和delete操作符

C++用new和delete操作符动态分配储存空间和动态释放储存空间。new和delete的一般语法形式为:
指针变量 = new 类型
delete 指针变量

new操作符按照指定类型的长度分配储存空间,并返回所分配的空间的首地址。
     delete操运算释放了指针变量所指的空间,并没有删除指针变量本身的储存单元和清除指针变量原来的值,此时,指针变量依然指向之前所指的空间,但空间已被释放。一个好的编程习惯是,在delete操作之后,对指针变量赋为NULL,清除其无意义的地址值。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值