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来改变

posted @ 2022-03-13 13:55  豪崽_ZH  阅读(301)  评论(0)    收藏  举报