当前位置: 首页 > ai >正文

C++ 变量和基本类型

1、变量的声明和定义

1.1、变量声明规定了变量的类型和名字。定义初次之外,还申请存储空间,也可能会为变量赋一个初始值。

如果想声明一个变量而非定义它,就在变量名前添加关键字extern,而且不要显式地初始化变量:

extern int i;   // 声明i而非定义i

int j;           // 声明并定义j

extern语句如果包含初始值就不再是声明,而是定义了:

extern int ss = 4;    // 定义

在函数内部,如果视图初始化一个有extern关键字标记的变量,将引发错误。

2、引用

引用为对象起了另外一个名字。

int ival = 1024;

int &refVal = ival;   // refVal指向ival(是ival的另一个名字)

int &refVal2;        // 报错:引用必须初始化

引用并非对象,相反的,它只是为一个已经存在的对象所起的另外一个名字。

int &refVal4 = 10;   // 错误,引用类型的初始值必须是一个对象;

double dval = 3.14;

int &refVal5 = dval;  // 错误,引用类型的初始值必须是int类型对象

3、指针

int ival = 42;

int *p = &ival;

利用指针访问对象

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

cout << *p ;   // 由符号*得到指针p所指的对象,输出42

4、const限定符

const修饰的变量,其被定义为常量。

const int i = get_size();         // 正确,运行时初始化

const int j = 42;                // 正确,编译时初始化

const int k;                        //  错误,k是一个未初始化的常量

默认状态下,const对象仅在文件内有效。

如果想在多个文件之间共享const对象,必须在变量的定义之前添加extern关键字。

// file_1.cpp定义并初始化一个常量,该常量能被其他文件访问

extern const int bufferSize = fcn();

// file_1.h 头文件,与file_1.cpp中定义的bufferSize是同一个

extern const int bufferSize;

对常量的引用:

const int ci = 1024;

const int &r1 = ci;

r1 = 42;    // 错误,对常量的引用不能被修改

int &r2 = ci;   // 错误,试图让一个非常量引用指向一个常量对象

对常量的引用可能引用一个并非const的对象

int i = 42;

int &r1 = i;

const int &r2 = i;  // r2绑定对象i,但是不允许通过r2修改i的值

r1 = 0;                 // 正确 r1并非常量,i的值修改为0;

r2 = 0;                  // 错误,r2是一个常量引用

http://www.xdnf.cn/news/12616.html

相关文章:

  • 意识上传伦理前夜:我们是否在创造数字奴隶?
  • KVC与KVO
  • Scade 语言概念 - 方程(equation)
  • DenseNet算法 实现乳腺癌识别
  • 游戏(game)
  • Go 语言 := 运算符详解(短变量声明)
  • Sum of Prod of Mod of Linear_abc402G
  • python的numpy的MKL加速
  • C# 类和继承(扩展方法)
  • 高精度算法--四则运算模板(附例题)
  • Nginx Stream 层连接数限流实战ngx_stream_limit_conn_module
  • SpringBoot十二、SpringBoot系列web篇之过滤器Filte详解
  • 2.3 VS2019 简单使用
  • LLM 笔记:Speculative Decoding 投机采样
  • HTML 面试题错题总结与解析
  • vue3 icon 图标 使用方法
  • VScode打开后一直显示正在重新激活终端 问题的解决方法
  • Modbus RTU与Modbus TCP详解指南
  • 安卓基础(编译.Class)
  • MCP详解及协议的使用(python版本和Node版本)
  • 【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
  • cv2.stereoRectify中R1, R2, P1, P2, Q中每一个分量的物理意义
  • grep、wc 与管道符快速上手指南
  • Linux八股【3】-----系统框架概述
  • SpringBoot项目接口集中测试方法及实现
  • 2.4 vcpkg 使用
  • Vue中渲染函数的使用
  • Promise深入理解
  • 【靶场】yzmcms5.3.0 SSRF漏洞
  • 分享一道力扣