指针小总结

指针的声明

格式:
typeName* pointName;
例:
int* p;
其中p是指针,而int* 是指向int的指针

指针赋值

应将内存地址赋值给指针,可以对变量名应用&运算符来获得被命名的内存的地址,new 运算符返回未命名的内存的地址

例:
int * pn;
int a=8;
pn=&a;
int * pa;
pa=new int[8];

区分指针和指针所指向的值

int * pt;
pt是指向int的指针,则*pt不是指向int的指针,而是完全等同于一个int类型的变量,pt才是指针

指针算术

C++中允许允许将指针和整数相加。加1的结果等于原来的地址值加上所指向的对象占用了总字节数,还可以将一个指针减去另一个指针获得两个指针的差,后一种运算将得到一个整数,仅当两个指针指向同一个数组,(也可以指向超出结尾的一个位置)时,这种运算才有意义,这将得到两个元素单独间隔。

int tacos[10] = { 5,2,8,4,1,2,2,4,6,8 };
	int* pt = tacos;
	cout << "pt=   " << pt << endl;
	pt += 1;
	cout << "pt=   " << pt << endl;
	int* pe = &tacos[9];
	cout << "pe=   " << pe << endl;
	pe -= 1;
	cout << "pe=   " << pe << endl;
	int diff = pe - pt;
	cout << "diff=   " << diff;

在这里插入图片描述

数组的动态联编和静态联编

使用数组声明来创建数组时,采用静态联编,即数组的长度在编译时设置

使用 new[] 运算符创建顺序时,将采用动态联编(动态数组),即将在运行时被数组分配空间,其长度也将在运行时设置,使用完这种数值后,应使用 delete[] 释放其占用的内存。

new 和 delete 遵守的规则

  • 不要使用delete 来释放不是new分配的内存
  • 不要使用delete来释放同一个内存两次
  • 如果使用new[]为数组分配内存,则应使用delete[]来释放
  • 如果使用new为一个实体分配内存,则使用delete来释放
  • 对空指针应用delete是安全的
错误使用:
int a = 5;
int *pa = &a;
delete pa;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值