1. 程式人生 > 其它 >06const char *、char const *、char *const三者之間的區別

06const char *、char const *、char *const三者之間的區別

const int abc = 12;//abc是常量不能改變abc的值
char *p   和  const   混用
    
	char str[] = "q-wertyuiop";
	char* p;
	p = str;
	*p = 'Y';//*p除非在定義中,否則就代表p所指向的記憶體地址。(*p在=的左邊)
	p++;
//Y-wertyuiop,p指向了-wertyuiop

    
(1)const char *p;
	char str[] = "q-wertyuiop";
	const char* p;//============p所指向的內容不能通過p來修改(p所指向的目標,那個目標中的內容不能通過p來修改)
	p = str;//指向
//	*p = 'Y';//*p除非在定義中,否則就代表p所指向的記憶體地址。(*p在=的左邊)
//--^---就有語法錯誤了
	p++;//p往下指是可以變化的,地址可以變化
	//但是它可以通過str[]來修改
	str[0] = 'Y';//這是OK的

(2)char const *p;
	//char const *p 等價於 const char *p; ===========

(3)char * const p;
	char str[] = "q-wertyuiop";
	char* const p = str;//定義的時候必須初始化
	//--------^--->     p一旦指向了一個東西之後,就不可以再指向其他東西了。
	//強調:指向了這個記憶體,就不可以指向這個記憶體的下一個記憶體。
	//p++;//這就不可以了。。。===^^^^=====================================================
	//但是可以指向這個記憶體的內容可以修改,內容可以修改。

(4)	const char * const p = str;
	//same: char const *const p = str;
//p的指向的記憶體不能改變,而且,記憶體中的內容也不能通過p來改變