型別轉換

2020-08-13 16:36:32
#include<iostream> 

using namespace std; 

//const char *p 的 const 修飾 讓 p 指向記憶體空間變成只讀屬性 
void printBuf(const char *p)
{
	//p[0] = 'Z'; 
	char *p1 = NULL;
	
	p1 = const_cast<char *>(p);	//去 const 屬性 
	
	p1[0] = 'Z';	//通過 p1 去修改記憶體空間 
	cout << p << endl;
	
}

int main()
{
	double dpi = 3.1415926;
	
	int num1 = (int)dpi; 				//c型別轉換 
	int num2 = static_cast<int>(dpi);	//靜態型別轉換  c++編譯器會做型別檢查 
	int num3 = dpi;		//c語言中 隱式型別轉換的地方  均可使用 static_cast<>() 
	
	//char* ---> int*  static_cast<>()不能用 
	char *p1 = "hello";
	int *p2 = NULL; 
	
	p2 = reinterpret_cast<int *>(p1);	//(重新解釋)強制型別轉換
	
	//列印 hello  
	cout <<"p1:" << p1 <<endl;	//%s
	//列印首地址 
	cout <<"p2:" << p2 <<endl;	//%d
	
	char buf[] = "aaaaaaaaaffffffdddddd"; 
	printBuf(buf);
	
	return 0;
 }