码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C++语法——指针和引用


    文章目录

        • 一.引用
            • 1.引用类型初始化
            • 2.&符号的作用:获取地址
        • 二.指针
            • 1.指针的创建
            • 2.空指针
            • 3.void* 指针
            • 4.指针的指针
            • 5.指针的引用

    C++ 引用和指针类型

    一.引用

    1.引用类型初始化

    引用(reference)为一个对象起了另一个名字
    通过type &a=b;的形式定义引用类型。
    PS:
    引用必须要被初始化,也就是必须要指向一个对象,不能指向常量。
    引用并非一个对象,引用是一个对象的“别名”
    类型一致:引用的别名类型和原来的对象类型要一致
    注意:引用定义和使用的时候&的含义不同

    int a1 = 100;
    int &y1 = a1;
    a1 = 101;
    cout << "a1=" << a1 << endl;
    cout << "y1=" << y1 << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    2.&符号的作用:获取地址

    &符号也叫取地址符、and等等

    	int a1 = 100;
    	cout << "address of a1=" << &a1 << endl;
    
    • 1
    • 2

    结果:

    address of a1=003EFCCC
    
    • 1

    二.指针

    指针是一个变量,其值为另一个变量的内存位置的地址。再次强调指针存放的是地址
    声明方式 type *var-name;
    注意:
    指针定义和使用的时候星号的含义不同
    要采用int *a; 的形式定义。
    不要使用

    int* a;
    
    • 1

    虽然结果一样但是会产生误导;
    多指针变量初始化

    int *a,*b;//采用这种写法
    int* a,b;或者int *a,b;//仅仅对a定义了指针类型
    
    • 1
    • 2
    1.指针的创建
    //指针
    //创建指针类型对象 :
    	int val = 100;
    	int *p1 = &val;//指针p1存放val的地址
    	cout << "p1=" <<*p1 << endl;
    //指针访问对象(获取对象值)或者给对象赋值:
    
    	*p1 = 200;
    	cout << "p1=" << *p1 << endl;
    	cout << "val=" << val << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    结果:

    p1=100
    p1=200
    val=200
    
    • 1
    • 2
    • 3
    2.空指针
    int *p2 = NULL;//需要include cstdlib
    	int *p2 = nullptr;
    	int *p2 = 0;
    	cout << "p2=" << *p2 << endl;//打印会报错
    
    • 1
    • 2
    • 3
    • 4
    3.void* 指针

    void* 指针可以存放任意类型的对象的地址。
    略

    4.指针的指针

    指针的指针即**p
    从逻辑上讲,一层指针指向某个变量地址,两层指针则指向某个变量地址所在存储的地址。
    在这里插入图片描述

    int val = 1024;
    	int *p1 = &val;
    	int **p2 = &p1;
    	cout << "val " << val << endl;
    	cout<< "*p " << *p1 << endl;
    	cout << "**p " << **p2 << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    结果:

    val 1024
    *p 1024
    **p 1024
    
    • 1
    • 2
    • 3
    5.指针的引用

    先不写
    建议这种多个符号的情况 符号从右向左看,这样确定r是引用类型,然后再往左看 可以知道r引用的是指针
    emmm。。。不懂
    在这里插入图片描述

    与const的组合使用。。。略

    参考:
    [1] 《C++promer》
    [2] 菜鸟教程
    [3] C++指针详解

  • 相关阅读:
    当初吃土建起来的“中台”,现在为啥不香了?
    基于springboot用户信息增删改查源码【附源码】
    K8S的调度算法在仿真实验的实现
    【5年保更新】Python爬虫复盘案例,精彩文案多多多多
    leetcode 97. 交错字符串
    信息系统项目管理师(2022年)—— 重点内容:项目进度管理(6)
    包装类和泛型
    C++学习笔记之四(标准库、标准模板库、vector类)
    基于Qt 5.14.2的QThread多线程用法及实例解析
    Sentinel热点参数限流
  • 原文地址:https://blog.csdn.net/caijige/article/details/126483169
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号