C++ 指针常量与常量指针

本文详细介绍了C++中的const指针和指针const的概念,通过实例展示了它们的区别。常量指针不可修改所指向的值,而指针常量则不能改变指向的地址。理解const的关键在于const修饰的是它紧邻的变量,决定了该变量是否可变。
摘要由CSDN通过智能技术生成

前言

在了解什么是常量指针与指针常量之前,我们先了解一个关键字const,const 是 constant 的缩写,本意是不变的,不易改变的意思。在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。被修饰的对象在定义后不能被修改。

#include<iostream>
using namespace std;
int main(void)
{
	const int  a = 7;
	a = 8;     //报错:表达式必须是可修改的左值
	return 0;
}

而指针常量与常量指针就是用const对其常量或指针进行修饰使其不能更改。


普通指针

普通指针平时接触得较多,其指向的地址与地址中的值都可以被更改

#include<stdio.h>
int main()
{
int a = 4;
int b = 6;
int* c = &a;
printf("%d\n", *c);	//4
*c = 5;	//修改地址中的值
printf("%d\n", *c);	//修改地址中的值后:5
c = &b;	//修改指向的地址
printf("%d\n", *c);	//修改指向的地址后:6	
return 0;
}

常量指针

常量指针,用const修饰常量限定了常量的值,即指向的地址可以修改,但地址中的值不能修改

//修改指向的地址
#include<stdio.h>
int main()
{
	int a = 4;
	int b = 6;
	const int* c = &a;
	printf("改变前:%d\n", *c);		//改变前:4
	c = &b;
	printf("改指向后:%d\n", *c);	//改指向后:6
	return 0;
}

//修改地址中的值
#include<stdio.h>
int main()
{
	int a = 4;
	int b = 6;
	const int* c = &a;
	printf("改变前:%d\n", *c);
	c = &b;
	printf("改指向后:%d\n", *c);
	*c = 5;	 //报错:表达式必须是可修改的左值
	printf("改指向的值后:%d\n", *c);
	return 0;
}


指针常量

常量指针,用const修饰指针,限定了指针的值,即指向的地址不可以修改,始终指向一个地址,但地址中的值能修改

//修改指向的地址
#include<stdio.h>
int main()
{
	int a = 4;
	int b = 6;
	int* const c = &a;
	printf("改变前:%d\n", *c);
	c = &b;		//报错:表达式必须是可修改的左值	
	printf("改指向后:%d\n", *c);
	return 0;
}

//修改地址中的值
#include<stdio.h>
int main()
{
	int a = 4;
	int* const b = &a;
	printf("改变前:%d\n", *b);		//改变前:4
	*b = 5;
	pintf("改指向地址的值后:%d\n", *b);		//改指向地址的值后:5
	return 0;
}


总结:

判断是普通指针、常量指针和指针常量,就是看是否加const和const加在哪里,const离谁近,就修饰谁,谁的值就不能更改
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值