C++ Primer 變量

一、變量

1.什麼是變量

變量是提供一個具名的、可供程序操作的存儲空間。
也就是說變量,具有自己獨特的名字,存儲空間和公共類型。
對於c++程序員來說,變量(variable)和對象(object)一般可以互換使用。
#include<iostream>
using namespace std;


class Dog
{

};
int main()
{
	int i;
	Dog dog;
}

這裏的i和dog都是變量或者說對象。


2.左值和右值

#include<iostream>
using namespace std;

int main()
{
	int i=10;
	i = i + 2;
}

在i=i+2;這行代碼中,左邊的i爲左值,右邊的i爲右值,
左邊的i表示i的地址,右邊的i表示i的值,也就是說把i的值+2在賦給i的地址。
也可以理解爲左值在等號左邊,右值在等號右邊,且常數不能爲左值。

3.定義和聲明

#include<iostream>//Source.cpp
using namespace std;


int i = 0;//定義
extern int j;//聲明
extern double pi = 3.14;//定義
int main()
{
	cout << i <<"  "<<j++<< endl;
	cout << pi << endl;
	system("pause");
	return 0;
}

//Source1.cpp
int j = 1;//定義
//double pi = 3.14159;//定義
//一個工程中可以有兩個CPP文件
//但是不能有兩個主函數


1)簡單來說,定義就是定義一個變量(對象),爲一個變量分配空間,和初始化他的值。在一個工程中同名變量只能存在一個(單指全局變量)。
2)而聲明則是說明我要用一個變量了,也就是聲明要用一個已經存在的變量。如上所示,在Source1.cpp中定義了j,在Source.cpp中就可以聲明j對其進行使用。
3)對一個聲明進行初始化則他就不再是一個聲明而是一個定義了,因爲聲明是不會分配空間的,而初始化會分配空間,也就使得聲明變成了定義。如上所示,兩個cpp文件中的pi定義是不可共存的。

4.作用域

#include<iostream>
using namespace std;

int i = 20;
void test()
{
	int i = 50;
}
int main()
{
	int i = 100;
	for (int i = 0; i < 10; i++)
	{
		cout << i<< endl;
	}
	cout << i << endl;
	cout << ::i << endl;
	system("pause");
	return 0;
}


1)全局作用域:等於20的i爲全局作用域,他從定義後開始存在,直到工程結束爲止刪除。
2)局部作用域:等於50的i和等於100的i爲局部作用域,他們作用於test函數和main函數中,從定義開始存在,函數結束後刪除。
3)語句作用域:for循環中的i爲語句作用域,作用於for循環中,循環結束刪除。
 4 )變量屏蔽 (隱藏):在main函數中會優先使用i=100的i,在for中會優先使用i=0的i,我們也可以通過::i的形式使用全局變量中的i。
5)Source.cpp中聲明的是Source1.cpp中的全局變量,他在什麼位置聲明就是什麼作用域的變量。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章