c++入门——变量

news2024/11/25 10:32:03

专栏简介:为什么我要重新介绍c++的相关知识,在此之前,我对于c++的了解也仅仅是在表面。而在后来与c++慢慢的接触中,c++编程语言越来越让我觉得深奥,所以还是想要重新开创一个专栏来介绍c++。对于c++的介绍,本专栏会先介绍98版的c++知识,之后会介绍11版的c++知识。

日常分享:每天努力一点,不为别的,只是为了日后,能够多一些选择,选择舒心的日子,选择自己喜欢的人!

 

目录

1.1、变量定义

1.1.1、初始值

1.1.2、列表初始化

1.1.3、默认初始化

1.2、变量声明和定义

1.3、标识符

1.4、名字的作用域


变量的概念,简单的说就是一个具有名称,可以供程序员操作的一个存储空间。由于c++是静态型编译语言,所以在定义变量时必须明确指明变量的数据类型,这样才能让程序在编译的时候分配合适的内存空间。

1.1、变量定义

变量的定义的基本格式是:首先是类型说明符,然后是变量名组成的列表,变量也可以赋初值,每个同类型的变量之间用逗号分开,结束时用分号隔开。

int i=-30; 
std::string name("Tom"); //name通过一个string字面值初始化

注意:

在c++中,存在对象和变量这两种说法,很多人分不清对象和变量的区别,对象是指的是一块能存放数据并具有某种类型的存储空间。单单从定义上来说,其实都是一个东西。只是有人习惯的把与类有关的称为对象,实际上都可以称为对象,如何称呼完全依据个人的爱好。就像方法函数的区分。

1.1.1、初始值

当对象在创建时获得一个特定的值,我们称为这个对象被初始化了。对于变量的定义,从定义的那一刻开始,在作用域类都是起作用的。

double price=10.98,Alcount=price*3;
//初始化格式正确,price从初始化开始就已经生效。
double sum=add(price,Alcount);
//调用函数add,将函数计算的值的返回给变量,正确。

在这里要注意一下,对于用函数来进行初始化这个问题,在后面会讲到常量表达式,这里会有一点冲突,一定要分清两者之间的差别。在一个就是关于赋值初始化这两者的差别,虽然说不会影响编写程序,但是可以作为一个知识了解。赋值是指的是把对象(变量)当前的值擦除用新的值来代替,而初始化指的是创建变量时赋予一个初始值,二者之间有本质的差别。

1.1.2、列表初始化

对于对象(变量)的初始化,c++提供了多种初始化的方式,关于这些初始化的方式,如果能全部掌握更好,至于喜欢哪种就看个人喜欢。

int untiled=0;
int untiled={0};
int untiled{0};
int untiled(0);

在这几种初始化方式中,我比较推荐的是列表初始化({})。列表初始化虽然会有局限,但是却能帮助我们提高代码的合理性和准确性。

double first=3.1415926;
int second{first},third={first};

像上面这种情况,由于可能存在数据丢失的情况,所以使用列表初始化会导致报错,如果用其他的初始化方式,则不会出现问题:

double first=3.1415926;
int second(first),third=first;

1.1.3、默认初始化

说到变量初始化,就必须谈到一个问题,那就是当你定义了一个变量而没有初始化的时候,当你去输出他的值的时候,会出现奇怪的数值,甚至会出现报错,这是由于c++中有一个默认初始化。在任何的函数体内,变量如果不人为的初始化,则变量不会被初始化,但是定义在任何函数体之外的变量被初始化为0。

注意:

虽然c++有默认初始化机制,但是还是建议变量进行初始化,这样才能保证程序的安全,也能养成好的编程习惯。

1.2、变量声明和定义

关于变量声明和定义这个问题,很多刚入门的小伙伴都不是很了解,因为大家写代码的时候都不会用到太多的文件,变量都是在cpp文件中定义,即使两个文件需要使用相同的变量值,很多人也只是重新定义一个变量。但是在c++中,有一个声明(extern)的功能。

c++中,声明和定义是区分开的,声明使得名字被程序所知,一个文件如果想使用别的文件中的变量,则必须包含对那个变量的声明。定义则是负责创建与名字关联的实体。

变量的声明规定了变量的类型和名字,但是没有声明存储空间,而定义则是为变量开辟了内存空间。

extern int i; //声明i而非定义i
int i=100; //声明且定义i

在使用extern的时候要注意,不要给变量赋初始值,一旦初始化,就不再是声明,而是定义。所以,一旦声明某个变量,就不要给这个变量显示初始化,因为这样会导致extern失去作用。

注意:

变量只能被定义一次,但是可以被声明多次。

1.3、标识符

c++的表示符由字母,数字和下划线组成。数字不能作为开头,只有字母和下划线可以作为开头。

在定义表示符的时候,我们应该遵从相应的规则,这样才能使代码显的更加规整。

定义表示符的规则:

1、尽量使用英语单词或者缩写,要见名知意。

2、变量一般用小写字母开头,类名用大写字母开头。

3、对于组合的单词,中间用下划线隔开。

1.4、名字的作用域

作用域指的是变量或者对象,函数等具有功能的一个范围,通常是以{}位界限。关于作用域这个概念,并没有什么难点,只需要知道,只有在与之对应的作用域内,变量(对象),函数等实体才具有功能。

举个例子:

#include<iostream>
int sclean=40; //全局变量,作用于全局作用域
int main(){

//进入作用域
{
int i=10; //这里的i只能在这里使用,超出作用域就不可使用;
std::cout<<i<<std::endl;
}
int i=100; //这里可以二次定义,因为前面定义的i已经失效
std::cout<<i<<std::endl;
//int sclean=34; //这里错误,函数体内的变量不能与全局变量重名。
return 0;
}

萨和嗯面的程序很好的解释了关于作用域这个概念,当然除此之外,还有while,for等循环之内的作用域,也大差不差。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/949531.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WebAssembly 在云原生中的实践指南

1 WebAssembly 介绍 WebAssembly&#xff08;Wasm&#xff09;是一种通用字节码技术&#xff0c;它可以将其他编程语言&#xff08;如 Go、Rust、C/C 等&#xff09;的程序代码编译为可在浏览器环境直接执行的字节码程序。 WebAssembly 的初衷之一是解决 JavaScript 的性能问…

1688API技术解析,实现按关键字搜索1688接口

要实现按关键字搜索1688商品&#xff0c;您可以使用1688提供的API来完成。下面是对1688 API的技术解析&#xff1a; 1. 注册成为1688开发者&#xff1a; 首先&#xff0c;您需要在1688开放平台上注册成为开发者&#xff0c;并创建一个应用以获取API访问权限。 2. 获取API访…

低代码是什么?能做什么?

2014 年全球权威咨询机构 Forrester 在报告中首次引入了低代码的概念&#xff0c;放眼彼时的中国市场&#xff0c;低代码这一名词还鲜为人知。随着国家积极推动数字化发展&#xff0c;越来越多的企业投入到了数字化经济的建设中&#xff0c;低代码也在这样的大环境中快速成长。…

JVM ZGC垃圾收集器

ZGC垃圾收集器 ZGC&#xff08;“Z”并非什么专业名词的缩写&#xff0c;这款收集器的名字就叫作Z Garbage Collector&#xff09;是一款在JDK 11中新加入的具有实验性质[1]的低延迟垃圾收集器&#xff0c;是由Oracle公司研发的。 ZGC收集器是一款基于Region内存布局的&#…

【RS485 - 总线冲突】

最近写了一个小小的串口通信程序&#xff0c;逻辑上感觉没什么问题&#xff0c;但就是数据与设定值不对。最后发现应该是总线冲突的问题。 在RS485通信中&#xff0c;如果在接收完数据后立即发送数据&#xff0c;可能会引发总线冲突问题。这是因为在RS485通信中&#xff0c;设…

经典问题解析四

关于动态内存分配 new 和 malloc 的区别是什么&#xff1f; delete 和 free 的区别是什么&#xff1f; new 关键字与 malloc 函数的区别 new 关键字是 C 的一部分 malloc 是由 C 库函数提供的函数 new 是以具体类型为单位进行内存分配 malloc 以字节为单位进行内存分配 …

webrtc-m79-msvc编译H264

0 写在前面 本文主要参考&#xff1a;webrtc 4577版本vs编译_tusong86的博客-CSDN博客 感谢作者的付出&#xff1b; 1 编译参数 powershell运行&#xff1a; // debug 需要编译参数 enable_iterator_debuggingtrue gn gen h264-debug-m79 --argsis_debugtrue use_lldfalse …

电脑日历怎么添加日程?如何在电脑上设置日程提醒?

在办公室使用电脑办公时&#xff0c;我们需要在电脑日历上添加日程&#xff0c;以便及时提醒自己工作中的重要事件。比如&#xff0c;我们需要安排明天的会议时间、发送重要文件的截止日期&#xff0c;或者是提醒自己去参加一个重要的客户洽谈会。这些日程安排对于我们的工作效…

财报解读:上半年GMV超50亿元,交个朋友瞄准了更广阔的市场

于今年7月曲线上市的交个朋友交出了首份“答卷”。 近日&#xff0c;交个朋友控股披露了2023年上半年财报&#xff0c;营收4.33亿元&#xff0c;同比增长215.5%&#xff1b;经调整净利润约9463.5万元&#xff0c;同比暴增1798%&#xff1b;全网合计GMV超50亿元。 图源&#xf…

strtok函数

目录 分隔函数 strtok 函数原型&#xff1a; 参数&#xff1a; 返回值&#xff1a; 代码演示&#xff1a; 函数解析&#xff1a; 注意事项&#xff1a; 分隔函数 strtok 函数原型&#xff1a; char * strtok ( char * str, const char * sep); 参数&#xff1a; str—要…

vue-drag-resize实现拖拽,座椅摆放

插件&#xff1a; vue-drag-resize <div class"drag-resize"><!-- https://juejin.cn/post/6844903713430061063isActive 是否激活状态 Default: falsew,h 组件宽度,高度 Default: 200--><VueDragResize :isActive"true" :w"100&qu…

筑牢数据隐私安全底线,ADSCOPE通过ISO隐私信息管理体系认证!

数字时代&#xff0c;信息安全尤其是数据隐私信息保护已经成为社会共识。近日&#xff0c;ADSCOPE&#xff08;上海倍孜网络技术有限公司&#xff09;已通过相关组织机构评审&#xff0c;符合ISO/IEC 27701&#xff1a;2019标准&#xff0c;获得隐私信息管理体系认证证书&#…

Zabbix“专家坐诊”第202期问答汇总

问题一 Q&#xff1a;请问一下 zabbix 里面怎么能创建出和sh文件有关联的监控项&#xff1f; A&#xff1a; 1.使用 Zabbix Agent 主动模式&#xff1a;如果你在目标主机上安装了 Zabbix Agent&#xff0c;并且想要监控与 sh 文件相关的指标&#xff0c;可以创建一个自定义的…

学乐多光屏 P90:打开儿童学习新视界

随着科技迅猛发展&#xff0c;儿童教育正在迎来一场前所未有的革命。在这个数字化时代的浪潮中&#xff0c;学乐多光屏P90凭借其卓越的特性和深远的教育理念&#xff0c;成为智能儿童学习领域的引领者&#xff0c;为孩子们创造了崭新的学习体验。 创新科技&#xff0c;引领学习…

(数字图像处理MATLAB+Python)第十章图像分割-第四,五节:分水岭分割和综合案例

文章目录 一&#xff1a;分水岭分割&#xff08;1&#xff09;原理&#xff08;2&#xff09;程序 二&#xff1a;综合案例&#xff1a;答题卡图像分割&#xff08;1&#xff09;设计思路&#xff08;2&#xff09;各模块设计&#xff08;3&#xff09;代码 一&#xff1a;分水…

通信原理板块——基础知识(四)

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 10、确知信号的时域性质主要包括自…

自然语言处理(NLP)是什么?

NLP(自然语言处理) 和 Phoebe Liu 的简介 您有没有和聊天机器人互动过&#xff1f;或者您是否向虚拟助手&#xff0c;例如 Siri、Alexa 或您车上的车载娱乐系统发出过某些请求&#xff1f;您使用过在线翻译吗&#xff1f;我们大多数人都曾与这些人工智能 (AI) 互动过&#xff…

校园用电安全管理系统可以识别违规电器吗

校园用电安全管理系统是处理恶意用电问题有效手段之一&#xff0c;系统具有实时监测、异常预警、监测设备运行状态、远程控制用电等功能&#xff0c;可以从根本上管理学校用电量&#xff0c;制定合理的用电计划&#xff0c;限制用电成本&#xff0c;避免各种恶意用电行为&#…

windows环境搭建ELK

目录 资源下载&#xff08;8.9.1&#xff09; ES安装、注册、使用 Kibana安装、注册、使用 Logstash安装、注册、使用 Filebeat安装、使用&#xff08;如果只有一个数据流&#xff0c;则不需要使用filebeat&#xff0c;直接上logstash即可&#xff09; 资源下载&#xff0…

关于商品活动的H5页面技术总结

背景 在单个html文件里面使用vue3、jquery等其他第三方js库&#xff0c;实现规定的页面效果&#xff0c;其中主要功能是从商品json数据中读取数据&#xff0c;然后可以通过搜索框、下拉框、左侧菜单来筛选商户信息。 页面布局 技术要点&#xff1a; 1、通过路由来进行页面布…