C++指针学习心得
一:使用delete删除new分配的数组是要注意的事项
1.不要使用delete释放不是new分配的内存
2.不要使用delete释放同一内存块两次(也就是同一指针变量)
3.如果用new[]分配内存分配内存侧用delete[]释放内存
二:指针小结
1.声明指针
要声明特点类型的指针如下面格式
int *pi;
double *pd;
2.给指针赋值
应将内存地址赋予指针,可以对变量名用&操作符,来获取命名的内存地址,new操作符返回
未命名的内存地址。
int pa=3;
pi=π //赋予的地址而不是值
pd=new char;
3.解除指针引用
对指针解除引用意味着获取指针指向的值,对指针应用解除引用或是间接值操作符
(*)来解除引用因此,如果想上面的例子那样pd指向的是double的指针,*pd指向的才是值
4.区分指针和指针所指向的值
如pt是指向int的指针,侧*pt不是指向int的指针,而是完全等同一个int类型的变量。
pt才是指针
5.数组名
C++的数组名指向的是第一个数组元素指向的地址
using namespace std;
/******************************************
*这就是C++指针的运用,对于一个普通变量(number)想获取其地址可以用地址符(&)来获取(&number)
* 若想取其值可以直接运用变量名(number)
*而对于一个声明为指针的变量(u_number)想获取值地址就可以直接运用指针变量名(u_number),如果
* 想获取指针所指向的地址的值侧需要用指针操作符(*)如:(*u_number)
******************************************/
int number=3;
int * u_number;
u_number=&number;
cout<<"number="<<number<<" &number="<<&number<<endl;
cout<<"*u_number="<<*u_number<<" u_number="<<u_number<<endl;
//使用new给指针分配内存
int * pt=new int;
*pt=100;
cout<<"*pt="<<*pt<<" pt="<<pt<<endl;
delete pt; //当使用(new)分配后的指针变量使用后要用(delete pt)来删除其所占的空间
/******************************************
*指针在动态数组的运用
当指针在数组中的运用的时候我们应该把指针当做普通变量来运用当想获取某个变量的值的时候直接使用变量名(p)
当想获取某个变量名的地址是就用(&p),也可以对指针运行(+ - )操作,但是这时候操作的是指针地址而不是值
******************************************/
double *p = new double[3];
p[0]=0.2;
p[1]=0.3;
p[2]=0.4;
cout<<"p[0]="<<p[2]<<"*p[0]="<<&p[0]<<endl;
p=p+1;
cout<<"p[0]="<<p[0]<<endl;
delete[] p;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述