变量是赋予存储位置的名称。它是程序中存储的基本单位。可以在程序执行期间更改存储在变量中的值。
变量只是给存储位置指定的名称,对变量执行的所有操作都会影响该存储位置。
在C ++中,必须在使用前声明所有变量。
如何声明变量?
典型的变量声明的形式为:// 声明单个变量
type variable_name;
// 声明多个变量
type variable1_name, variable2_name, variable3_name;
变量名可以由字母(大写和小写),数字和下划线“ _”字符组成。但是,名称不能以数字开头。
在上图中,
datatype:可以存储在此变量中的数据类型。
variable_name:赋予变量的名称。
value:它是存储在变量中的初始值。//声明float变量
float simpleInterest;
//声明整数变量
int time,rate;
//声明字符变量
char var;
变量声明和定义之间的区别
变量声明是指其中一个变量被首先声明或在其首次使用之前引入的部分。
变量定义是其中变量分配的存储器位置和一个值的部分。在大多数情况下,变量声明和定义是一起完成的。
请参阅以下C ++程序以获得更好的说明:#include
using namespace std;
int main()
{
//声明和定义
//变量“a123”的
char a123 = 'a';
//这也是声明和定义
//因为“b”是分配的内存和
//分配了一些垃圾值。
float b;
//多个声明和定义
int _c, _d45, e;
// Let us print a variable
cout <
return 0;
}
变量类型
根据C ++中变量的范围,存在三种类型的变量:局部变量
实例变量
静态变量
现在让我们详细了解这些变量中的每一个。局部变量:在块,方法或构造函数中定义的变量称为局部变量。这些变量是在输入的块或从该块退出后调用并销毁该函数或从该函数返回调用时销毁的。
这些变量的范围仅存在于声明该变量的块中。也就是说,我们只能在该块中访问这些变量。
局部变量的初始化是强制性的。
示例程序1:// C++ program to demonstrate Local variables
#include
using namespace std;
void StudentAge()
{
// 局部变量 age
int age = 0;
age = age + 5;
cout <
}
// Driver code
int main()
{
StudentAge();
}
输出:
学生年龄是:5
在以上程序中,变量age是函数StudentAge()的局部变量。如果我们在StudentAge()函数外部使用变量age,编译器将产生一个错误,如下面的程序所示。
示例程序2:// C++ program to demonstrate Local variables
#include
using namespace std;
void StudentAge()
{
// local variable age
int age = 0;
age = age + 5;
}
// Driver code
int main()
{
StudentAge();
cout <
}
实例变量:实例变量是非静态变量,并且在任何方法,构造函数或块之外的类中声明。当实例变量在类中声明时,这些变量在创建类的对象时创建,而在对象被销毁时被销毁。
与局部变量不同,我们可以对实例变量使用访问修饰符。如果我们未指定任何访问说明符,则将使用默认的访问修饰符。
实例变量的初始化不是强制性的。
实例变量只能通过创建对象来访问。
示例程序:// C++ program to demonstrate Local variables
#include
using namespace std;
class Marks {
public:
// This is a class variable
static int studentNumber;
// These variables are instance variables.
// These variables are in a class
// and are not inside any function
int engMarks;
int mathsMarks;
int phyMarks;
public:
Marks()
{
// Modify the class variable
++studentNumber;
};
};
// Setting the class variable of Marks
int Marks::studentNumber = 0;
// Driver code
int main()
{
// first object
Marks obj1;
obj1.engMarks = 50;
obj1.mathsMarks = 80;
obj1.phyMarks = 90;
// second object
Marks obj2;
obj2.engMarks = 80;
obj2.mathsMarks = 60;
obj2.phyMarks = 85;
// displaying marks for first object
cout <
cout <
cout <
cout <
cout <
// displaying marks for second object
cout <
cout <
cout <
cout <
cout <
}
输出:
第一个对象的标记:
2
50
80
90
第二个对象的标记:
2
80
60
85正如您在上面的程序中看到的那样,变量engMarks,mathsMarks和phyMarks是实例变量。如果上面的程序中有多个对象,则每个对象将有其自己的实例变量副本。从上面的输出中可以清楚地看到,每个对象都有自己的实例变量副本。静态变量:静态变量也称为类变量。这些变量的声明与实例变量的声明类似,不同之处在于,在任何方法构造函数或块之外的类中,使用static关键字声明静态变量。
与实例变量不同,无论我们创建多少个对象,每个类只能有一个静态变量的副本。
静态变量在程序执行开始时创建,并在执行结束时自动销毁。
静态变量的初始化不是强制性的。默认值为0
如果我们通过对象访问诸如实例变量之类的静态变量,则编译器将显示警告消息,并且不会停止程序。编译器会自动将对象名称替换为类名称。
如果我们访问不带类名的静态变量,则编译器将自动附加类名。
要访问静态变量,我们不需要创建该类的对象,我们只需将变量访问为
class_name :: variable_name;
示例程序:// C++ program to demonstrate Static variables
#include
using namespace std;
class Marks {
public:
// This is a class variable
static int studentNumber;
// These variables are instance variables.
// These variables are in a class
// and are not inside any function
int engMarks;
int mathsMarks;
int phyMarks;
Marks()
{
// Modify the class variable
++studentNumber;
};
};
// Setting the class variable of Marks
int Marks::studentNumber = 0;
// Driver code
int main()
{
// object of Marks
Marks obj1;
obj1.engMarks = 50;
obj1.mathsMarks = 80;
obj1.phyMarks = 90;
// displaying marks for first object
cout <
// Now to display the static variable,
// it can be directly done
// using the class name
cout <
// But same is not the case
// with instance variables
cout <
cout <
cout <
}
输出:
物体标记:
1
50
80
90
实例变量Vs静态变量每个对象都有自己的实例变量副本,而我们每个类只能有一个静态变量副本,无论我们创建了多少个对象。
使用一个对象对实例变量进行的更改不会反映在其他对象中,因为每个对象都有自己的实例变量副本。如果是静态的,则更改将反映在其他对象中,因为静态变量是类的所有对象共有的。
我们可以通过对象引用访问实例变量,并且可以使用类名直接访问静态变量。
静态变量和实例变量的语法:类示例
{
static int a; //静态变量
int b; //实例变量
}