1. 程式人生 > >C語言到C++ 基礎1

C語言到C++ 基礎1

從C語言到C++ 基礎及引用

#include "iostream"		//包含c++標頭檔案

using namespace std;
			//使用名稱空間  std標準的名稱空間

void main01()
{
	//cout 標準輸出 黑螢幕
	cout << "hello...." << endl;
	system("pause");
}

//求圓的面積 面向過程的方法
void main02()
{
	double r = 0;
	double s = 0;

	cout << "請輸出圓的半徑:";	//輸出
	cin >> r;					//cin 代表鍵盤輸入
	s = 3.14*r*r;
	cout << "圓的半徑為:" << r << endl;
	cout << "圓的面積為:" << s << endl;

	system("pause");

}




//面向物件的方法
class MyCicle
{
public:
	double m_r;		//半徑  屬性 成員變數
	double m_s;		//面積

public:
	void setR(double r)		//成員函式
	{
		m_r = r;
	}
	double getR()		//成員函式
	{
		return m_r;
	}
	double getS()
	{
		m_s = 3.14*m_r*m_r;
		return m_s;
	}
};
//求圓的面積 面向物件的方式
//用面向物件的方法
//1 類的抽象 成員變數和成員函式
//2例項化  類的物件
//3 求面積
	//面向過程加工的是類
//4 main整合測試
//思考 類是一個數據型別 定義一個類是抽象的概念,不分配記憶體
//用資料型別定義變數才分配型別

void main03()
{
	MyCicle c1, c2, c3;	//用類定義物件
	double r1;
	cout << "請輸出c1圓的半徑:";
	cin >> r1;
	c1.setR(r1);
	cout << "c1圓形的面積是:" << c1.getS() << endl;

	double r2;
	cout << "請輸出c1圓的半徑:";
	cin >> r2;
	c2.setR(r2);
	cout << "c1圓形的面積是:" << c2.getS() << endl;


	system("pause");
}

 名稱空間

#include  "iostream"

using namespace std;
//1.檔案中iostream 沒有引入標準的std;需要手工寫	
//7.如果不寫 using namespace std; 需要顯示的引入std
void main04()
{
	std::cout << "namespace test" <<std::endl;

	system("pause");
}
//3.定義名稱空間
namespace namespaceA	
{
	int a = 10;
}

namespace namespaceB
{
	int a = 20;
	namespace namespaceC //可巢狀
	{
		struct Teachar
		{
			char name[32];
			int age;
		};
	}
}

//4.使用名稱空間

void main05()
{
	using namespace namespaceA;
	using namespace namespaceB;
	cout << namespaceA::a << endl; 
	cout << namespaceB::a << endl;


	//namespaceB::namespaceC::Teachar t1;

	using namespace namespaceB::namespaceC;
	Teachar t1;
	t1.age = 20;
	cout << t1.age << endl;

	system("pause");
}

引用

#include <iostream>

using namespace std;

//引用,給變數取別名,已定義變數的別名,很像指標
//引用在c++內部實現是一個常量指標 佔記憶體 C++編譯器內部處理
void main06()	//06
{
	int a = 10;
	int &b = a;	//引用語法 C++中
				//普通引用必須要初始化
	b = 20;

	cout <<"a:"<< a << endl;
	cout <<"b:"<< b << endl;


	system("pause");
}











//基礎型別的引用
void myswap0(int a, int b)
{
	int temp = 0;
	temp = a;
	a = b;
	b = temp;
}

void myswap1(int &a, int &b)
{
	int temp = 0;
	temp = a;
	a = b;
	b = temp;
}

void main07()
{
	int x, y;
	x = 10;
	y = 20;
	myswap0(x,y);
	cout << "x:" << x << endl;
	cout << "y:" << y << endl;
	cout << endl << endl << endl;
	myswap1(x, y);
	cout << "x:" << x << endl;
	cout << "y:" << y << endl; //可改變形參的值

	system("pause");
}














//複雜資料型別的引用
struct Teacher
{
	char name[64];
	int age;
};

void printfT1(Teacher *pT) //指標
{
	pT->age = 33;
}

void printfT2(Teacher &pT)//引用
{
	pT.age = 44;
}

void main08()	//08
{
	Teacher t1;
	t1.age = 22;

	cout << "修改前t1.age:" << t1.age << endl;
	printfT1(&t1);
	cout << "指標修改t1.age:" << t1.age << endl;
	printfT2(t1);
	cout << "引用修改t1.age:" <<t1.age << endl;

	system("pause");
}

 返回值是引用

#include <iostream> 

using namespace std;

//返回值是一個數值
int getAA0()
{
	static int a = 0;
	//a = 10;
	return a;
}

//返回a變數的本身
//如果是static變數或者全域性變數,返回值是變數本身,可以當左值
int& getAA1()
{
	static int a = 0;
	//a = 10;
	return a;
}

int main()
{
	int a1 = getAA1();	//得到數值
	int &a2 = getAA1(); //得到地址
	getAA1() = 100;		//引用可以是左值,可修改a的數值
	int a3 = getAA1();


	cout << "用int型別接收getAA1函式返回值  a1:" << a1 << endl;
	cout << "用引用型別接收getAA1函式返回值 a2:" << a2 << endl;
	cout << "用指標型別接收getAA2函式返回值 a3:" << a3 << endl;

	cout << endl;

	system("pause");

}