zoukankan      html  css  js  c++  java
  • C++ 引用 和 指针 心得

    感谢万能的师兄= =!

    上班时有如下结构:

     1 struct ImportFormat
     2 {  
     3     LPCSTR    fileFormat;
     4     LPCSTR videoFormat;
     5     LPCSTR audioFormat;
     6     BOOL isPlus;
     7     int priority;
     8   vector<ConnectionInfo2> &connections;
     9 //const std::vector<ConnectionInfo2> connections;
    10     
    11 };

    在main()调用时

    ImportFormat  imf;

    报错,要求必须初始化。因为struct和class几乎完全一样,于是在struct中添加 publie: ImporFormat()构造函数,里边初始化。

    在初始化的过程中,发现还在报错,具体过程真不想说,都是泪。

      询问师兄,师兄说,肯定要报错,就在引用那里,去掉后OK了。


    趁着机会,就把之前不懂的引用和指针概念问题都抛了出来:


    1.引用,相当于别名,指向的是已经存在的同一个东西。

       那在struct中为什么报错?

       说出原因来羞愧死我= =!就好像先有的人才有的名字和别名。不能在创造一个对象前就声明了一个别名,谁的别名啊?

        引用,必须对是已经存在的对象而言


    2.指针,其实就是地址   

       

    1 int a ;
    2 int *pa=&a; //&取地址操作
    3 *pa=a;  //*取值操作
    4 int &b=a;//b是a的别名,引用

    3.函数传参  

      函数定义时

      (1) int function(int & a),

                传参为a的地址。在函数定义域内,a不是地址,不是指向a的指针,a就是他本身。

                函数结束,a改变。

     (2) int function(a)

               传参为a的副本。  在函数定义域内,a 是副本

               函数结束,a没变       

      (3)int function(int *pa)

               传参为指向a的指针

               函数结束,a改变。

        综合:回想 SWAP(a,b)没成功,SWAP(*,*)成功


    4.函数传参

       函数调用时

       在main()中

        int b;

       对于上式(1),调用为 function(b)//写本身即可

       对于上式(3),调用为function(&b)//指针

          


    暂时写这里,下班

    注意!在类和struct中,没事就不要用引用了。。。          

       

  • 相关阅读:
    C
    C
    如何收集项目日志统一发送到kafka中?
    Jmeter压测快速体验
    实时收集Storm日志到ELK集群
    Neo4j的查询语法笔记(二)
    Logstash2.3.4趟坑之集成Redis哨兵模式
    Spring-Boot中如何使用多线程处理任务
    使用SpringBoot1.4.0的一个坑
    手动从零使用ELK构建一套搜索服务
  • 原文地址:https://www.cnblogs.com/karcylee/p/3473664.html
Copyright © 2011-2022 走看看