zoukankan      html  css  js  c++  java
  • 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;

        

  • 相关阅读:
    文件I/O(二)
    linux学习之文件I/O篇(一)
    静态库和共享库
    vim-ide
    CentOS6 vsftpd 安装及优化方法
    Redmine2.5+CentOS6+Apache2
    分享一个TP5实现Create()方法的心得
    Windows证书的生成导出以及使用证书验证文件是否被修改
    如何设置程序UAC控制
    关于C#的可变长参数
  • 原文地址:https://www.cnblogs.com/zongji/p/12491822.html
Copyright © 2011-2022 走看看