【C++】3-1.3 c++常量指针类型引用

【C++】3-1.3 c++常量指针类型引用

1.常量指针类型

声明形式如下:

int const* p;  //或者是 const int* p;

常量指针 又叫常指针,可以理解为常量的指针;
即这个指针指向的地址是个常量。(这里的指针只是个变量)

关于常量指针
1.1. 指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改;
1.2. 可以被赋值为变量的地址,之所以叫常量指针,是限制了通过这个指针修改变量的值;
1.3. 还可以指向别处,因为指针本身只是个变量,可以指向任意地址;

常量指针 示例:

#include <iostream>

int main() 
{
    
    
	int a{
    
     77 };//c++11的初始化方式,建议使用这种窄化初始化方式;
	int b{
    
     66 };
	const int* p1 = &a;
	std::cout << "p1=" << p1 << std::endl;
	std::cout << "a=" << a << std::endl;

	a = 300;     //OK,仍然可以通过原来的声明修改值,

	std::cout <<"a="<< a << std::endl;
	//*p1 = 56;  //Error,*p1是const int的,不可修改,即常量指针不可修改其指向地址的值;
	p1 = &b;     //OK,指针还可以指向别处,因为指针只是个变量,可以随意指向;
	
	std::cout <<"p1="<< p1 << std::endl;

	std::cin.get(); //等待从键盘读取字符
	return 0;
}

运行如下:
在这里插入图片描述

2.常量指针类型引用

#include <iostream>

int main()
{
    
    
	const char* a = "jn10010537";    //常量指针变量a为指向"jn10010537"字符串的首地址;
	const char* b = "hello";

	//申明并初始化常量指针类型的引用
	//当一个引用变量一旦绑定另一个变量,引用的关系就不能再改变了。
	const char*& c = b;

	std::cout << "b=" << b << std::endl;
	std::cout << "c=" << c << std::endl;

	c = a; //即把"jn10010537"字符串的首地址 放到 常量指针变量b中;

	std::cout <<"b="<< b << std::endl;
	std::cin.get(); //等待从键盘读取字符
	return 0;
}

运行如下:
在这里插入图片描述

3.关于易错

易错-1
“const char *” 类型的值不能用于初始化 “char *” 类型的实体
在这里插入图片描述
易错-2
无法用 “const char *” 类型的值初始化 “char *&” 类型的引用(非常量限定)
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/jn10010537/article/details/115288969