全站数据
8 4 2 0 5 8 1

const指针用法

经济前现 | 简单学习,快乐成才!         
问题更新日期:2024-11-01 01:32:38

问题描述

const指针用法求高手给解答
精选答案
最佳答案

有两种不同的方式将const关键字用于指针:

第一种是指针指向一个常量对象,防止使用该指针修改所指向的值;

第二种是将指针本身声明为常量,防止改变指针指向的位置。

1. 指向一个常量的指针

例如,声明一个指向常量的指针pt:

int age=23;

const int*pt=&age;

该声明指出,pt指向一个const int(这里为23),因此不能使用pt来修改这个值,即*pt的值为const,不能被修改:

*pt+=1; //不可行

但是pt的声明并不意味着它指向的值是一个常量,而只是意味着对pt而言这个值是常量,例如:pt指向age,而age不是const,可以直接通过age变量来修改age的值,但不能使用const指针来修改它:

*pt=20; //不可行

age=20; //可行

2. 将const变量的地址赋给指向const的指针是可行的,但将const的地址赋给常规指针是不可行的:

const int age=23;

const int*pt=&age; //可行

const int age=23;

int*pt=&age; //不可行

第一种情况禁止使用age来修改值23,也不能使用pt来修改;

第二种情况不可行的原因是将常量age的地址赋值给pt。则可以使用pt来修改age的值,这就使得age的const状态很荒谬,因此C++禁止将const的地址赋给非const指针,如果非要这么做,只能使用强制转换来突破这种限制。