zoukankan      html  css  js  c++  java
  • 三种*

    C++中*的有三种用法:
            1)、乘号,例:a*b;
            2)、表示指针类型,例:int* p;
            3)、对取指针类型变量的值,例:int b = *p。

    对1)而言,*是作为单独的二元运算符号存在,对*前后的两个变量,它没有特别修饰某一个的含义;
           
    对2)而言,应将“int*”看做一种新的类型,int指针型。p是这个变量的名称,而“int*”是p变量的类型。也就是说,*可以和任何一种class或type搭配,形成“classname* “ 或“typename*”的新类型。这种新类型由前半部分的name和后半部分的*共同指示出某段内存地址:

                    *说明p的值是某段内存地址的起始位置(对于32位操作系统而言,p是一个8位十六进制数);
                    name说明p指示的这段内存地址的长度,这个长度就是class或type的size。

            * p表示这个变量是一个指针类型,它保存了一个内存地址(某数据在内存中的起始地址),但大多数时候这并没有任何意义。我们从内存中获取数据,还需要知道它在内存中的长度,而这个长度由*前面的class或type来决定,这样一来,p的类型才会从“指针类型”变成有意义的“某指针类型”。
            对2)中的*,单独存在时没有任何意义,附加在变量名p上也没有任何意义,只有附加在某class或type之后才有完整的意义。
           
    3)中,*是一个一元运算符,它的操作数必须是某指针类型,它返回的某类型的值。


    对于2)和3)的编码习惯,我喜欢使用下面的空格形式:

    int* p = &a;
    int b = *p;

    而不喜欢用

    int * p = &a;
    int b = * p;

  • 相关阅读:
    我所知道的JS调试
    css加载会造成阻塞吗?
    移动端图片上传旋转、压缩的解决方案
    JS组件系列——自己动手扩展BootstrapTable的 冻结列 功能:彻底解决高度问题
    什么是BFC
    CSS中margin边界叠加问题及解决方案
    JavaScript 中回调地狱的今生前世
    用css实现自定义虚线边框
    仿淘宝,京东红包雨
    css3实现可以计算的自适应布局——calc()
  • 原文地址:https://www.cnblogs.com/mumuliang/p/1873576.html
Copyright © 2011-2022 走看看