c++入门——变量

专栏简介:为什么我要重新介绍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等循环之内的作用域,也大差不差。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心随而动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值