首页 > 编程语言 >03_C++基本数据类型_复合类型

03_C++基本数据类型_复合类型

时间:2024-03-07 10:14:05浏览次数:25  
标签:03 cout 指向 int 数据类型 C++ 引用 include 指针

主要复合类型:引用和指针

1.引用

允许在一条语句中定义多个引用,其中每个引用标识符都必须以&开头。

#include<iostream>
using namespace std;

int main() 
{
    int b;
    int &a = b;
    b = 6;
    cout << "a:" << a << endl;
    cout << "b:" << b << endl;

}

输出:a:6   b:6

#include<iostream>
using namespace std;

int main() 
{
    int b;
    int &a = b;
    a=1;
    b = 6;
    cout << "a:" << a << endl;
    cout << "b:" << b << endl;

}

输出:a:6   b:6

2.指针(难点)

指针:指向另外一种类型的复合类型。与引用类似,指针实现了对其他对象的间接访问。然而与引用相比又有很多不同点。(1)指针本身就是一个对象,允许对指针赋值和拷贝,在指针的生命周期内可以先后指向几个不同的对象。(2)指针无需在定义时赋初值。

指针值:(1)指向一个对象(2)指向紧邻对象所占空间的下一个位置(3)空指针,没有指向任何对象(4)无效指针

#include<iostream>
using namespace std;

int main() 
{
    //使用指针
    int *a;
    int b = 5;
    a = &b;
    //b = 6;
    cout << "*a:" << *a << endl;
    cout << "a:" << a << endl;
    cout << "&b:" << &b << endl;
    cout << "b:" << b << endl;

}

输出

利用指针访问对象,如果指针指向了一个对象,则允许使用解引用符(操作符*)来访问该对象。

某些符号有多重含义:像&和*的符号,既能用作表达式里的运算符,也能用作声明的一部分。

上述代码也可以写成:

#include<iostream>
using namespace std;

int main() 
{
    //使用指针
    int b = 5;
    int *a=&b;
    cout << "*a:" << *a << endl;
    cout << "a:" << a << endl;
    cout << "&b:" << &b << endl;
    cout << "b:" << b << endl;

}

 指向指针的指针:通过*的个数区别指针的级别。**表示指向指针的指针,以此类推。

#include<iostream>
using namespace std;

int main() 
{
    //使用指针的指针
    int b = 5;
    int *a=&b;
    int ** c = &a;
    cout << "*a:" << *a << endl;
    cout << "a:" << a << endl;
    cout << "&b:" << &b << endl;
    cout << "b:" << b << endl;
    cout << "*c:" << *c << endl;
    cout << "**c:" << **c << endl;

}

 

输入如下:

解引用int型指针,为了访问最原始的对象,需要对指针的指针做两次解引用。有三种方式输出b的值,(1)直接输出(2)通过int型的指针a输出(3)两次解引用c。

指向指针的引用:引用本身不是一个对象,因此不能定义指向引用的指针。但指针是对象,所以存在对指针的引用。

#include<iostream>
using namespace std;

int main() 
{
    //使用指针的指针的引用
    //int型的指针a
    int * a;
    //c是对指针a的引用
    int *&c = a;
    cout << "&a:" << &a << endl;
    cout << "&c:" << &c << endl;
}

 

输出如下

 

标签:03,cout,指向,int,数据类型,C++,引用,include,指针
From: https://www.cnblogs.com/qhj384343045-/p/18056290

相关文章

  • 【2024-03-03】连岳摘抄
    23:59看看生鸡活鸭、鲜鱼水菜,碧绿的南瓜、通红的辣椒,热热闹闹,挨挨挤挤,让人感到一种生之乐趣。                                                 ——汪曾祺运气是和......
  • 【2024-03-02】连岳摘抄
    23:59别怕美好的一切消失,咱们先来让它存在。                                                 ——王小波孔子有句教诲很好,“不在其位,不谋其政”。它往往被消极理解,......
  • [转]如果继承上一任的C++库
    转自微信公众号:CSDN原文链接:https://gaultier.github.io/blog/you_inherited_a_legacy_cpp_codebase_now_what.html作者|PhilippeGaultier译者|郑丽媛有时候,也许你刚换了一份新工作,也许刚换了一个团队,也许团队中某个有经验的人刚离开,这时需要你来继承一个旧的C++ 代码......
  • Qt/C++音视频开发68-检查是否含有B帧/转码推流/拉流显示/监控拉流推流/海康大华宇视监
    一、前言为什么需要判断视频文件是否含有B帧,这个在推流的时候很容易遇到这个问题,一般来说,没有B帧的视频文件,解码后的数据帧pts和dts都是顺序递增的,而有B帧的则未必,可能有些需要先解码后面显示,B帧也是双向预测图像B,对它的编码,即是对它前后帧的像素值之差进行编码,B帧是双向差别帧,也......
  • C++STL学习第一篇(什么是STL以及string的各种功能用法)
    STLSTL提供了六大组件,彼此之间可以组合套用,这六大组件分别是:容器、算法、迭代器、仿函数、适配器、空间配置器。数据结构和容器管理:STL提供了多种数据结构和容器,如向量(vector)、链表(list)、集合(set)、映射(map)等。这些容器可以帮助程序员方便地存储和管理数据,根据需求进行动态调......
  • 03——链表
    链表经典的链表应用场景:LRU缓存淘汰算法。缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非常广泛的应用,比如常见的CPU缓存、数据库缓存、浏览器缓存等等。缓存的大小有限,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?这就需要缓存淘汰策略来决......
  • 2024.03.06
          第二天所花时间(包括上课)1h代码量(行)50h博客量(篇)1了解到的知识点AndroidStudio对数据库的增删改,了解了相应的代码          今天学习了AndroidStudio的对数据库的增删改,学习了相应的代码,复习了原来javaweb的相......
  • 2024/03/06
    今日在软件学习上所花的时间大概就3小时多左右。今日的编写的代码行数算上数据库大概300多行。发表博客一篇。今天主要学习了springboot中的三层架构加上分层解藕,使用ioc容器管理和DI分配来完成项目在运行时的对象的实例化对象的填充。packagecom.itheima.springbootwebquic......
  • 20240302 专项训练
    背包专项训练bottle题意简述link有\(n\)瓶水,第\(i\)瓶水有剩余水量\(a_i\)和最大容积\(b_i\),在不超过瓶子容积的前提下,小A可以把任意多的水从一个瓶子倒向另一个瓶子,所花费的时间等同于倒过去的水的体积。求最多能得到多少个空瓶,以及在得到最多的空瓶的前提下,他最少......
  • The Marvels of an Electronic Technician's World
    Welcometothefascinatingworldofelectronictechnicians!Inthisblogpost,wewilldiveintotheexcitingrealmoftheseunsungheroeswhoworkbehindthescenestokeepourgadgetsrunningsmoothly.Fromtroubleshootingtorepairing,anelectronicte......