首页 > 编程语言 >c++ 引用和指针

c++ 引用和指针

时间:2024-07-21 21:51:58浏览次数:11  
标签:10 指向 int c++ swap 指针 引用


    c++ 引用和指针

在C++中,引用和指针是两个非常重要的概念,它们有一些相似之处也有一些不同之处。

相似之处:

  1. 引用和指针都可以指向一个对象。

  2. 引用一旦被初始化指向一个对象后,就不能再指向其他对象,而指针可以在任何时候指向其他对象。

不同之处:

  1. 引用在定义时必须初始化,指针则可以在任何时候被初始化。

  2. 引用不可以为空,指针可以为空。

  3. 引用自始至终指向初始化时的对象,而指针可以改变所指向的对象。

  4. 引用的大小等同于指针的大小(在32位平台上是4字节,在64位平台上是8字节),因为引用本质上是指针的别名。

  5. 引用的操作实际上是对其所指向的对象的操作,而指针需要显式解引用才能操作其所指向的对象。

下面是一些使用引用和指针的例子:

使用指针:

    int a = 10; int *p = &a; // 指针p指向变量a cout << *p; // 输出a的值

使用引用:

    int a = 10; int &b = a; // 引用b指向变量a cout << b; // 输出a的值

使用指针传递函数参数:

    void swap(int *x, int *y) { int temp = *x; *x = *y; *y = temp; } int main() { int a = 10, b = 20; swap(&a, &b); return 0; }

使用引用传递函数参数:

    void swap(int &x, int &y) { int temp = x; x = y; y = temp; } int main() { int a = 10, b = 20; swap(a, b); return 0; } 提示:AI自动生成,仅供参考    

标签:10,指向,int,c++,swap,指针,引用
From: https://www.cnblogs.com/sexintercourse/p/18315006

相关文章

  • 快速完成VsCode C/C++开发环境配置
    前言本人在配置VsCodeC++开发环境时,查看了很多的博客,内容参差不齐,尤其是关于json文件的配置,绕的人头很晕,最终还是通过阅读官方文档,结合部分博客的指引,完成了环境的配置,在此记录本人的配置过程,希望能帮助到大家。事先声明,本文的内容大量引自VsCode官方的文章:https://code.visual......
  • OpenCV 遍历Mat,像素操作,使用TrackBar 调整图像的亮度和对比度 C++实现
    文章目录1.使用C++遍历Mat,完成颜色反转1.1常规遍历方式1.2迭代器遍历方式1.3指针访问方式遍历(最快)1.4不同遍历方式的时间对比2.图像像素操作,提高图像的亮度3.TrackBar进度条操作3.1使用TrackBar调整图像的亮度3.2使用TrackBar调整图像的对比度1.使用C++遍历M......
  • C++吃豆人~
    #include<cstdio>#include<iostream>#include<ctime>#include<conio.h>#include<windows.h>#include<cstdlib>#include<cstring>usingnamespacestd;constintn=809;structPoint{intx,y;};intdali;intfx[......
  • C++小游戏
    #include<iostream>usingnamespacestd;doubleshengmingli=2000;//定义主角初始生命力intgongjili=150;//定义主角初始攻击力intfangyuli=200;//定义主角初始防御力intmoney=20;//定义主角初始金钱数量boolguoguan;//定义是否通关判定voidwuqidian();//定义武器......
  • c++的一些科技
    pd_ds需要#include<bits/extc++.h>usingnamespace__gnu_pbds;usingnamespace__gnu_cxx__gnu_pbds::priority_queue注意可能会与std::priority_queue冲突。定义方法:__gnu_pbds::priority_queue<T,Compare,Tag,Allocator>T:类型名Compare:严格弱化的比较类型......
  • C++合作开发项目:美术馆1.0
    快乐星空MakerZINCFFO合作入口:CM工作室效果图:代码:(还有几个音乐!)main.cpp#include<bits/stdc++.h>#include<windows.h>#include<conio.h>#include<time.h>#include"music.h"usingnamespacestd;structCITYBLOCK{ stringi......
  • LeetCode题(66,69,35,88)--《c++》
     66.加一////Createdbywxj05on2024/7/20.////法一classSolution{public:vector<int>plusOne(vector<int>&digits){boolcarry=true;//进位标志for(inti=digits.size()-1;i>=0&&carry;--i){......
  • 【C++11】lambda表达式
    目录lambda表达式function包装器bind绑定lambda表达式我们之前如果要对一组数据排序,我们可以调用sort,并且传一个仿函数对象或者函数指针或者调用库中的类模板并实例化成对象,比如:boolLess(inta,intb){ returna<b;}structGreater{ booloperator()(inta......
  • C++学习之路——第一天(结构体、C++程序从编写到运行)
    引子:兜兜转转还是你~C++数据类型int占用4个字节(32位机)char占用1个字节(8位机)short占用2个字节(16位机)long占用4个字节(32位机)float占用4个字节(32位机)double占用8个字节(64位机)longdouble占用16个字节(64位机)define和const的区别define在......
  • C++多线程编程中的锁详解
    在现代软件开发中,多线程编程是提升应用程序性能和响应能力的重要手段。然而,多线程编程也带来了数据竞争和死锁等复杂问题。为了确保线程间的同步和共享数据的一致性,C++标准库提供了多种锁机制。1.std::mutexstd::mutex是最基础的互斥锁,用于保护共享数据,防止多个线程同时访问......