C++变量,常量,数组和字符串详解
作者:Josia. 发布时间:2023-06-18 14:03:29
一、内存和寻址概述
可编程设备包含微处理器和一定数量的临时存储空间。临时存储器被称为随机存取存储器(RAM)。
RAM类似于宿舍里成排存物柜的存储区域,每个存物柜都有编号,即地址。要访问特定的内存单元,需要使用指令要求处理器从这里获取值或写入值。
微处理器负责执行应用程序,并从RAM中获取要执行的应用程序以及相关联的数据,包括了显示到屏幕上的数据和用户输入的数据。
二、变量
显式地指定用于存储的内存单元的地址,如578,容易出错,因此产生了变量。
1.声明变量
variable_type variable_name;
variable_type variable_name= initial_value;
变量类型向编译器指出了变量可存储的数据的性质,变量名替代了变量值在内存中的存储地址。
可声明并初始化多个类型相同的变量。
如:int FirstNumber=0,SecondNumber=0
,Multiplication=0;
可在开头声明变量,也可在需要时再声明变量。
#include <iostream>
using namespace std;
int main(){
cout << "----两数相乘----" <<endl;
cout << "输入第一个数字:";
int FirstNumber = 0;
cin >> FirstNumber;
cout << "输入第二个数字:";
int SecondNumber = 0;
cin >> SecondNumber;
int MultiplicationResult = FirstNumber * SecondNumber;
cout<< FirstNumber << "X" << SecondNumber <<"="<< MultiplicationResult << endl;
return 0;
}
程序中声明了FirstNumber
和SecondNumber
变量,用于临时存储用户输入的数字;
通过设置变量,程序员可以使用对人类明了的名称,把将变量关联到地址以及创建RAM访问指令的工作留给编译器做。
注:a、变量名可包含字母和数字,但不能以数字开头,变量名不能包含空格和算数运算符,可使用下划线,不能是保留的关键字(如return)。
b、存储在变量中的数据被存储在内存中。
2.变量的作用域
2.1 局部变量
#include <iostream>
using namespace std;
void MultiplyNumber(){
cout << "----两数相乘----" <<endl;
cout << "输入第一个数字:";
int FirstNumber = 0;
cin >> FirstNumber;
cout << "输入第二个数字:";
int SecondNumber = 0;
cin >> SecondNumber;
int MultiplicationResult = FirstNumber * SecondNumber;
cout<< FirstNumber << "X" << SecondNumber <<"="<< MultiplicationResult << endl;
}
int main(){
//调用函数
MultiplyNumber();
return 0;
}
注意:不能在函数MultiplyNumber()外调用FirstNumber和SecondNumber变量,因为这些变量的作用域是局部的,即从声明它的语句开始到当前函数的末尾。
函数结束后,将销毁所有局部变量,并归还它们占用的内存。
不同函数中声明的变量为独立的实体,名称可相同,但作用域不同。
2.2 全局变量
#include <iostream>
using namespace std;
//全局变量
int FirstNumber = 0;
int SecondNumber = 0;
int MultiplicationResult=0;
void MultiplyNumber(){
cout << "----两数相乘----" <<endl;
cout << "输入第一个数字:";
cin >> FirstNumber;
cout << "输入第二个数字:";
cin >> SecondNumber;
MultiplicationResult = FirstNumber * SecondNumber;
cout<< FirstNumber << "X" << SecondNumber <<"="<< MultiplicationResult << endl;
}
int main(){
//调用函数
MultiplyNumber();
cout<< FirstNumber << "X" << SecondNumber <<"="<< MultiplicationResult << endl;
return 0;
}
在函数外部声明的变量为全局变量。
虽然MultiplicationResult
的值在MultiplyNumber()
中获得,但仍可在main()
中使用。
3.c++变量类型
3.1、bool布尔类型
true和false
直接赋值:
如bool A=false;
结果为布尔类型值的表达式:
bool D=(User=="yes");
3.2 char字符型
char UInput="Y";
注:表示内存空间容量大小的单位是位和字节。位的取值为0或1;字节可以包含字符的数字表示。
示例中使用字符数据时,编译器把字符转换成可存储到内存中的数字表示。“Y”的ASCⅡ码为89,因此编译器在分配给UInput的内存空间中存储89.
4.常量
定义常量后,就不能修改它的值。
与变量一样,常量占用内存空间,并使用名称标识为其预留的空间的地址,但不能覆盖该空间的内容。
来源:https://blog.csdn.net/weixin_45761545/article/details/120863893
猜你喜欢
- 在 C# WPF开发中颜色对话框控件(ColorDialog)用于对界面中的背景、文字…(拥有颜色属性的所有控件)设置
- 本文所述为C#实现根据指定容器和控件名字获得控件的方法,在进行C#应用程序设计时有一定的借鉴价值。分享给大家供大家参考借鉴。具体实现方法如下
- 一、关于堆JDK1.8中的PriortyQueue(优先级队列)底层使用了堆的数据结构,而堆实际就是在完全二叉树的基础之上进行了一些元素的调
- Android超清晰6.0权限申请AndPermission的具体实现代码,供大家参考,具体内容如下前言这是我经常使用的框架,原因:1.思路
- 一、打印直角三角形这个循环控制打印十行空格for (int x = 1; x <= 10; x++) {//因为要打印一个十行的直角三
- 首先说一下,教科书上的扫描线算法确实是用c++很好实现,而且网上有很多源码,而java实现的基本没有(可能是我没看到),所以肖先生还是打算自
- 话不多说,请看代码/// <summary>/// 删除字符串中的中文/// </summary>public st
- 背景介绍公司最近做分库分表业务,接入了 Sharding JDBC,接入完成后,回归测试时发现好几个 SQL 执行报错,关键这几个表都还不是
- 本次为了记录开发一个基于webservice接口,去解析对方传送过来的xml字符串。实际使用时遇到的一些问题。传输过来的xml格式大致如下:
- 最近正式入坑Flutter,首先从环境搭建开始,看了网上好多关于Windows环境搭建的资料,基本都是按官方文档写的,看完的感受是,还不如直
- 一、配置xml路径mybatis-plus:mapper-locations: classpath:mapper/*.xml二、编写Mapp
- 目录面试题1:如何判断对象是否存活1.引用计数算法2.可达性分析算法面试题2:哪些对象可以作为GC Roots?面试题3:你了解的对象引用方
- 本文实例为大家分享了unity实现鼠标跟随的具体代码,供大家参考,具体内容如下需求:当鼠标放到cube上,然后移开鼠标cube会跟随鼠标移动
- 废话不多说,直接上代码package com.ncu.list;/** * * 顺序结构线性列表 *&nbs
- WPF实现 Gitee泡泡菜单框架使用大于等于.NET40;Visual Studio 2022;项目使用 MIT 开源
- 继承反应了类和类之间的关系。世界上很多事物都是有共性的,共性的那一部分我们就抽象为基类,用于派生其它类,这样提高了代码的复用性,使得代码的结
- 1. 添加maven依赖包<dependency> <groupId>org.apache.calcit
- 1、注意事项众所周知,对一个文件进行读写操作时,我们需要创建对应的输入流和输出流但需要注意的是,读写操作不能同时进行(边读边写),即不能同时
- 写在前面:接下来很长一段时间的文章主要会记录一些项目中实际遇到的问题及对应的解决方案,在相应代码分析时会直指问题所在,不会将无关的流程代码贴
- 1. 测试文档、期望达到的目标文档效果用于测试的Word文档如下所示,包含的空白段落影响文章整体布局及美观性:目标文档效果:2. 辅助工具2