程序的本质就是在不停的从不同的地方读取数值,更改数值,然后再写入数值。期间很多操作很难一次性完成,所以变量能帮助我们更容易的处理数据。
变量是临时存储数据的地方。我们可以把一个值给一个变量这样这个变量就可以用来在程序里边做各种各样的操作。
我们可以把变量想象成一个数据的标签。比如,你想记住数字 5,但不想每次都直接写 5,因为这个数字看着太抽象,没法记住。而且如果还有另一个东西也是数字 5,这两个东西就会被搞混。们就要给这个5起个名字,比如叫 age。
以后在程序里,你只要提到 age,它就知道你指的是那个 5。
变量的定义方式
变量要先定义才能使用,用这个语法
typ name1 [name2 ... ]
举几个例子:
char c;
int i, counter;
double x, y, size;
初始化
c++的变量初始化通常有两种方法。
第一种,用 = 直接赋值,比如说 char c = 'a'
第二种,用constructor。这种方式把要初始的值放到这个变量后一对括号里。比如说 char c('a')
全局变量或者局部变量
在程序里,如果变量放在一个函数的外边,这个变量就是一个全局变量(global variable)。这个变量整个程序都看得到。
如果这个变量放在一个函数的里边,这个变量就是一个局部变量(local variable),这样的话,这个变量只有在这个函数里才看得到。
值得注意的是,全局变量如果没有赋值,会用初始值 0 ,而本地变量如果没有赋值,会是一个随机数。这也被称为“垃圾值”(garbage value)
https://www.programiz.com/online-compiler/3bP7bzgAmxGhc
// Online C++ compiler to run C++ program online
#include <iostream>
int global_int;
using namespace std;
int main() {
cout << "global: " << global_int << endl;
int local_int;
cout << "local: " << local_int << endl;
return 0;
}
如上面的程序,local_int的值是不确定的。有可能是0,也有可能不是。
constant object
如果我们确定一个变量,从开始定义是就确定这个“变量”是不会变的,那么我们可以把这个定义成一个常量。比如说:
const double pi = 3.1415947;
好处是这么做了后,如果试图修改其值,编译器会报错
pi = pi + 2.0;
Volatile
这个东西比较少见,但是在有些程序里,一个程序的变量有可能被另一个程序修改,这个时候我们就要在这个变量前加voliatile。
这个keyword是在和编译器说,别优化这个变量。
为什么呢?编译器为了让程序跑的更快,如果它知道这个变量在整个程序里只读了一次,编译器就不会一直追踪这个变量的值。
但是有些程序,因为另一个程序会修改这个变量,如果不追踪他的数值,这个程序就会出错。这个时候我们就必须在这个变量前加volatile。比如说
volatile unsigned long clock_ticks;
1532

被折叠的 条评论
为什么被折叠?



