⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 完美c++疑难解答-常量.txt

📁 完美C++疑难解答 详细的讲解了C/C++编程过程中的一些难点和容易混淆的地方!值得收藏反复研究。
💻 TXT
字号:
1.const:指针...
cont int &i;
//
const int i=5;
int i=5;
i=7;
cout<<"i:"<<i<<endl;
const把类型抽掉当做复制的效果...看const真的是指向哪个...
const int &i;
const int *p;//跟上面一样...不可改变内容
int *const p;//不可以改变地址...

void main()
{
//const int i=5;
	int a=5;
	int b=10;
	const int *p =&a;
	int * const q =&a;

	p=&b;
//	*p=100;//值不能改变
//	q=&b;//地址不能改变
	cout<<"p指向:"<<*p<<endl; 
	cout<<"p指向:"<<*q<<endl; 
}
 



























参考资料:
const char *, char const *, char * const

cosnt char **p, char * const *p, const char * const *p,

------------------------------------------------------------
const char *p;
char const *p; 
//这两个定义是完全一样的,实质上规范的写法应该是const在char前面
//都是指向静态字符的指针,p可改变,但p所指内容不可改变。
//即:pointer to const char
char * const p;
//与上两个完全不同
//是指向字符的静态指针,p不可改变,但p所指内容可改变。
//即:const pointer to char

cosnt char **p;
char * const *p;
//其实这两个与上面两个没什么不同,无非是指向指针的指针罢了。
//第一个是指向静态字符指针的指针,p可改变,
//但p所指的指针是不能变的(p所指内容不可变)。
//第二个是指向字符指针的静态指针,p不可变
//但p所指的指针是可以改变的(p所指内容可变)。
const char * const *p;
//这个是最严格的限定,即为指向静态字符指针的静态指针,比较绕口。
//大家如果对const char const *p能理解,这个就OK
//p不可变,p所指内容亦不可变。

//下面说说赋值问题
char cp1;
const char cp2
cp1 = cp2;
//这个赋值当然没问题了。
char *p1;
const char *p2;
p1 = p2;
//这个赋值被认为是非法的,why??
//上面已经说了const char *的含义并非是指针不可被修改,
//而是指针指向的内容不可被修改因此,如果把一个const char *赋给一个char *,
//那么你就可以通过p1来修改本来p2所指的内容了,
//结果就导致原来加那个const的目的形同虚设,一点意义也没有了。  
//而把一个const char赋给一个char就不存在这个问题。

//另外顺便再说一下,volatile类型的赋值问题

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -