字符串常量常量字符串 指针常量常量指针问题

C/C++一大玄学 指针常量字符串指针指针字符串,在使用的时候总是各种问题百出,到底是什么因素导致呢?
1:死记硬背;
2:运用场景不多;
3:不同人看法一致,说法不同,导致记忆没有重叠。

我们来看官方的说法:

字符串常量
常量字符串
定义:用双引号(“”)括起来的0个或者多个字符组成的序列;
存储:每个字符串尾自动加一个 ‘\0’ 作为字符串结束标志;
其重点在于常量 ,常量的内容是个字符串。
没区别
指针常量和常量指针,加了指针就有区别了
指针常量:这个常量是指针类型的
也就是说,这个指针是一个常指针,指向的地址空间不能变;
但是注意:
我们不能更改p的指向,但是我们可以更改p指向空间的 内容,这就是指针常量。

    int a = 5;
	int * const p = &a;
	cout << *p << endl;
	a = 6;
	cout << *p << endl;

常量指针:
常量指针是指向常量的指针,也就是这个指针是可以修改的,但是原来指针所指向的空间是一个常量,这是不能修改的。

    int a = 5;
	int b = 6;
	int const * p = &a;
	cout << *p << endl;
	p = &b;
	cout << *p << endl;

我们还会看到一种写法

	const char * p = "str";

这个写法说明了指针p指向的是个常量字符串,这个字符串的内容不允许修改,但是指针可以更改。

   const char * p = "str";
	cout << p << endl;
	p = "asdnaj";
	cout << p << endl;

简记:
*和 const谁在前先读谁,
指针常量是这个指针是常量,
常量指针是这个指针指的内容是常量。

猜你喜欢

转载自blog.csdn.net/flf1234567898/article/details/107878583