• Pointer 指针


    利用指针访问对象,指针指向一个对象,允许使用解引用符(操作符*)来访问对象
    
    int ival = 42;
    int *p = &ival;//p存放变量ival的内存地址,p是指向变量ival的指针
    cout << *p;//符号*得到指针p所指的对象
    
    对指针解引用会得到所指的对象,给解引用的结果赋值,实际也就是给指针所指对象赋值
    *p = 0;//符号*得到指针p所指对象,可经由p为变量ival赋值
    *p 操作的是指针指向对象 的内存地址空间,为*p赋值实际是为p所指的对象赋值;
    解引用操作适用于确实指向了对象的有效指针
    使用字面值nullptr初始化指针
    指针初始化为字面值0生成空指针
    NULL预处理变量preprocessor variable指针赋值 NULL在变量 cstdlib;
    
    预处理 运行与编译之前预处理变量不属于命名空间Std
    C++程序使用nullptr生成申明空指针
    *pi 是 对象的值,pi却是对象的内存
    int iival  = 1024;
    int *pi = 0;//pi合法,是一个空指针
    int *pi2 = &ival //pi2是一个合法的指针,存放ival值
    if(pi)  pi 的值 0,因此条件的值是false
    if(pi2) pi2指向ival,因为它的值不是0,条件为true;
    任何非0指针对应的条件值true
    对应两个类型相同的合法指针,== != 操作符   result boolera;
    两个指针存储的地址值相同 指针存储的地址值相同都为nullptr;
    都指向同一个对象
    都指向了同一个对象的
    一个指针指向某对象,同时另一个指针指向
    同一条定义语句,虽然基本数据类型只有一个,申明符的形式却可以不同,一条定义语句可能定义出不同类型的变量
    
    &r = i  赋值运算符 改变的永远都是左值
    r定义多个变量
    类型修饰符*& 作用于本次定义的全部变量   可以把空格写在类型修饰符和变量名中间
    
    空格写在类型修饰符和变量名中间
    
    空格写在类型修饰符和变量名中间
    int* p;
    int *p;
    合法但很容易产生误导
    *修饰符 
    *p仅仅修饰了p,对该声明语句中的其他变量 并不产生任何作用
    int* p,p2;//p是指向int的指针,p2是int
    把修饰符和变量写在一起
    int *p1,*p2;
    涉及指针和引用声明 第一种把修饰符和变量标识符写在一起,此种形式着重强调变量具有的复合类型
    第二种把修饰符和类型名写在一起
    并且每条语句只定义一个变量;
    指针是内存中对象,像其它对象一样有自己的地址,允许把指针的地址再存放到另一个指针当中
    int *p,i;
    int pp = &p;
    
    ***指向指针的指针的指针
    int ival = 1024;
    int *pi = &ival;//pi是一个指向int型数
    int **ppi = π
    

      

  • 相关阅读:
    韩国新地图格式
    这次是真的准备出售用于传奇开发的HGE图形引擎了
    减小Delphi2010程序的尺寸(关闭RTTI反射机制)
    hook api 保护进程
    使用静态库
    iOS中的Block动画
    IOS中忽略字符串两边空格比较
    判断是否输入有汉字
    EasyDSS产生cache缓存如何设定定时清理缓存?
    EasyDSS定制项目中ETCD服务挂掉如何设定定时重启?
  • 原文地址:https://www.cnblogs.com/ruiy/p/6718701.html
Copyright © 2020-2023  润新知