C++语言 const char * 、char const * 、char* const的区别

 1、const char * 、char const *

这两者是等价的。当我们使用char const *定义一个指针变量时,我们可以使这个指针变量指向别的char型的变量,但不能通过指针来修改这个char的值。但是可以使这个指针指向别的变量。例如:

#include "pch.h"
#include <iostream>
using namespace std;

int main()
{
	char str[] = "I Love China!";//定义一个字符串数组
	const char *p1;
	char const *p2;
	char *p3;

	p1 = str;
	p2 = str;
	p3 = str;

	//*p1 = 'Y';//不合法
	//*p2 = 'Y';//不合法
	*p3 = 'Y';//合法

	*p1++;//合法
	*p2++;//合法
	*p3++;

	cout << str << endl;

	return 0;
}

2、char* const

当我们使用char* const 定义一个指针变量时,在定义的时候就要给它初始化,不然编译都不会通过,而且在初始化之后,就不能修改指针的指向了。相当于这个指针只能指向唯一的一个变量,即初始化时的变量。但是我们可以用这个指针修改被指向的变量的值。例如:

int main()
{
	char str[] = "I Love China!";
    //char* const p;//不合法,在定义时就要给它赋值
	char* const p = str;

	*p = 'Y';//合法的,可以通过指针修改变量的值
	//p++;//不合法,指针p只能指向唯一的的地址,即数组的首地址
	cout << str << endl;
	return 0;
}

 3、char const *const

这个就是把前两个结合起来。既不能通过p修改变量,也不能指向别的地址。

4、函数形参带const

void func1(const int a)
{
	//在函数中不能修改实参的值
    //a = 100;//不可以
}
int main()
{
//在形参中加const ,会更加灵活,
//因为在调用时函数时,传入的实参不管是不是const类型都可以。而且可以直接传入一个常量
	func1(1);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值