北京时间2023年6月11日22点53分,天气总体晴,温度适宜。没写随笔差不多一年了,也从佛山的广发银行、美的外包跳槽到了深圳坂田这边的华为OD,JAVA或许是干的不太愿意深入了,想学习下C++。今天学习到C++的重点之一:指针,鄙人不才,记忆力不太好,所谓的好记性不如烂笔头,把学到的指针知识都记录下吧!
1、指针(定义:类型 * 指针变量),可以理解为就是内存中的数据对象的地址。比如 int a = 10 ; a在内存中地址假设是0x64564dx,那么int * p = &a(在这里&是取值符号,将a的地址赋值给了指针p)。
2、解引用(* 号+指针变量),* p = 25,表示对指针p解引用并且直接将a的值改为了25。
3、常量指针(const 类型 * 指针变量),定义一个常量的int变量 const int b = 20, 此时b变量的地址只能赋值给常量指针const int * p2 = &b(常量指针说明指针和那个数据对象都得是常量)。此时常量指针p2不能解引用改变b的值,因为b是常量,*p2 = 50 是错的;
但是p2可以重新指向另外的常量数据对象,如const int c = 30, *p2 = &c。
4、指针常量(类型 * const 指针变量),它不能改变指向的内存地址,如 int d = 60 (注意变量d不是常量,否则只能被常量指针引用); int * const p3 = &d; p3可以改变实际引用的变量d的值,*p3 = 66;但是不能这样:int e = 70; p3 = &e;
5、将第3、4点结合起来则是(const 类型 * const 指针变量)指向常量的指针常量,const int k = 80; const int * const p4 = &k; p4既不能解引用改变k的值:*p4 = 88,也不能重新引用其他变量 const int m = 90; p4 = &m。