C++关于指针的学习

 定义:  指针是指向另外一种类型的复合类型,与引用类似。但是相比于引用,指针本身就是一个对象,允许对指针进行赋值和拷贝

   并且在指针的生命周期内可以分别指向不同的对象(按照本人的理解,我认为指针是存放一个对象地址的容器,所以和其他int a,

   int b,int c之类的一样,指针存放的内容可以被覆盖)。其次指针不需要在定义的时候初始化,但是和其他类型一样,在块作用域内定义

   的指针如果没有被初始化,也将拥有一个不确定的值------------------以上内容节选自C++Primer第五版

 

  定义格式:变量类型  *变量类型 例: int *p;或者int *p=&a;

  这里的‘&’在指针中是取地址符号,表示指针存放a这个对象的地址也就是指针p指向a

  赋值:指针的赋值有两种,第一种是改变指向的对象,第二种是改变自己指向的对象的内容

  例一,改变指向的对象:int *p=&a; p=&b; 这里p一开始是指向a,然后b将自己的地址赋给p,之后p就指向了b

  例二,改变指向对象的内容:int a=5; int *p=&a; *p=10;  这里如果输出a那么a的值会变为10.因为*p访问了a的内容并改变了他

 

 

指针值:指针的值(即地址)应属于下列四种状态之一

    1、指向一个对象

    2、指向紧邻对象所占空间的下一个位置

    3、空指针,意味着指针没有指向任何对象

    4、无效指针,也就是上述情况之外的其他值 ----------参考C++Prmer

  例:一个牛客上的指针小题

  int a=7,b=8,*p,*q,*r;

  p=&a;

  q=&b;

  r=p;p=q;q=r;

  cout<<*p<<*q<<a<<b; //结果 *p=8,*q=7,a=7,b=8;

一句话概括就是,指针r交换了指针p和q的地址,但是没有改变a,b的值。

空指针:

定义方式:int*p1=nullptr;//这是C++11标准引入的一种办法

     int *p2=0;

     调用#include<cstdlib>

     int *p3=NULL;//等价于int *p3=0;

    

原文链接: https://www.cnblogs.com/zongji/p/12491822.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++关于指针的学习

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/335253

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午10:03
下一篇 2023年3月1日 下午10:03

相关推荐