标签:c++
我们在日常编程中经常会有int a=10;,那么这个a就是变量。变量提供了程序可以操作的有名字的存储区,要是在汇编时代,我们是直接操作寄存器和内存地址的,那么现在就把底层的寄存器和内存地址抽象出来,取了一个别名,通过这个别名也可以操作这块内存。
C++中每一个两边都要有一个特定的类型,该类型决定了变量的大小和布局,能够存储于该内存中的值的取值范围,以及可以在该变量上进行的一些操作。C++中经常把变量称为“变量”或“对象”。
什么是对象?一般而言,对象就是内存中具有类型的区域,也就是计算左值表达式就会产生对象。
1.变量初始化
在C++中变量的初始化一般分为直接初始化和复制初始化:
注意事项:在C++里面初始化并非赋值,首先初始化是值创建变量并赋值,而赋值指的是变量之前就存在,只不过是擦除当前对象的值并赋予新值。
比如下面的:
int a=10;//复制初始化 <span style="font-family:Comic Sans MS;">//+++++++++++++++++++++++</span> <span style="font-family:Comic Sans MS;">int b; b=10;//赋值,并非初始化 </span>分清这两者的区别对于C++编程尤为重要!
2.初始化多个变量
我们首先来看一个简单的C++赋值语句:
int number = number;
这个语句是正确还是错误呢?
当一个定义中定义了两个以上的变量的时候,每个变量都可能有自己的初始化式,对象的名字立即变为可见,所以可以用同一个定义中前面已定义的变量初始化后面的变量:
int number1=10,number2=number1;
那么如果是int number = number这样的式子呢?我们前面讲过复制初始化分为两步,第一步就是创建一个变量,第二步才是赋予新的值,我们首先创建了number这个变量,那么number变量马上可见,然后再用可见的number来初始化自己(虽然这样做毫无意义,最终还是没有初始化)。所以这个式子编译器是不会报错的。
变量的初始化可以分为两种:
分清变量的定义和变量的声明在后续的编程中也是尤为重要的
变量的定义:用于为变量分配内存空间,还可以为变量指定初始值。在一个程序中,变量有且只有一个定义
变量的声明:用于向程序表明变量的类型和名字。定义也是声明:在定义变量时我们定义了它的类型和名字。我们可以使用extern关键字来表明是在声明而不是在定义。
如:
extern int a ;//声明 int a ;//定义extern不分配存储空间,只能说明变量定义在程序的其他地方,比如在其他的C文件里面:
<span style="font-size:18px;">//example.c int a=10; //++++++++++++++++++ //main.c extern int a; main(){ int b=a;//b=10; } </span>编译结果为:
gcc -c main.c -o main.o
cc -c -o example.o example.c
gcc main.o example.o
没有任何问题。
如果在声明时有初始化式子,那么它就可以被当做是定义!
<span style="font-family:Comic Sans MS;font-size:18px;">//example.c int a=10; //++++++++++++++++++ //main.c extern int a=11;//错误,在链接两个example.o 和 main.o的时候a就重定义了 main(){ int b=a;//b=10; }</span>gcc -c main.c -o main.o
标签:c++
原文地址:http://blog.csdn.net/ii1245712564/article/details/42708191