const 与 指针

#include <iostream>

using namespace std;

int main()
{

	// 第一种,使指针不能修改对象的值,注:此时指针可以指向另外的对象
	int i = 10;
	int j = 100;

	const int *pi = &i;   // 限定指针无法修改对象的值

	//*pi = 1000;		// error!
	pi = &j;
	cout<<*pi<<endl;

	// 第二种,指针仅仅只能指向当前值, 此时可以修改对象的值
	int* const cpi = &i;

	*cpi = 1;		// ok
	//cpi = &j;		// error!
	//cpi++;		// error

	// 第三种,只能指向某对象,并且无法修改其值
	const int * const ccp = &i;

	//*ccp = 1;		// error
	//cpp = &j;		// error

	/*
	* 一般定义指针是这样的  int *pi = NULL;
	* 前面加 const  ->   const int *pi  表明pi 无法修改指向的值
	* int * const pi	 此时 const 修饰 pi, 表明pi不可变动
	*/

	return 0;
}

const 与 指针

时间: 2024-09-29 01:17:19

const 与 指针的相关文章

速记const 指针与指向const的指针

指向const的指针,它的意思是指针指向的内容是不能被修改的.它有两种写法. ` const int* p; (推荐) int const* p;` 再说const指针,它的意思是指针本身的值是不能被修改的.它只有一种写法 int* const p=一个地址; (因为指针本身的值是不能被修改的所以它必须被初始化) 这两种情况很难分清,你只需注意在const后面的是*符号还是变量,*在后说明,const的是指针指向的对象,变量在后说明const的是指针本身 版权声明:本文为博主原创文章,未经博主允

const与指针修改const对象

我们都知道const对象作用是声明变量为常量,在程序中除非显示转换,否则无法修改. 本文针对显示修改的情况,提醒了一种隐式的错误,以及解决办法. 考虑下面的代码: #include<iostream> int main(){ const int a=0; int *p=const_cast<int*>(&a);//&a返回int *,const_cast<int*>显示转换为int*. *p =1; int b=*p; int c=a; std::cou

当const遇到指针

const 是c++中常用的修饰符,用它修饰的数据是无法改变的,所以当const遇到指针时就会出现几种情况: const int *p1; //代表了指向常量的指针变量,意思就是指针自身可以改变,他们可以指向其他地址,但是他们指向地址中的数据是不能改变的; int const *p2; //同上; int* const p3; //代表常量指针,意思是指针自身不能改变,但是他们指向地址中的数据是可以改变的; const int* const p4; //代表指向常量的常量指针,指针自身不能改变,

const与指针的纠缠

当使用带有const的指针时其实有两种意思.一种指的是你不能修改指针本身的内容,另一种指的是你不能修改指针指向的内容. 先说指向const的指针,它的意思是指针指向的内容是不能被修改的.它有两种写法.      const int* p; (推荐)       int const* p;      p是一个指针,它指向的内容是const int 类型.p本身不用初始化它可以指向任何标示符,但它指向的内容是不能被改变的. 再说const指针,它的意思是指针本身的值是不能被修改的.它只有一种写法  

比较常见的const与指针的组合情况

1.对于普通的const与基本类型组合,都是表示的是这是一个常量, const int a; int const a; 表示的意思是一样的,a是一个常量,不可改变 2.对于const与指针组合在一起,可以将const理解为内容,*理解为指针,誰在前面谁不能改变,誰在前面先读谁 const int *a;  等价于int const *a;    const在前面所以内容不可以改变,但是指针指向可以改变.也就是常量指针 如:int const *a=b;    这样就不能再出现*a=x等其他值了,

const 和指针

c++用了那么久,觉得 const 和指针配合到一起的时候就会有点点分不出来. 如下: const Data* pData; Data const * pData Data * const pData const Data * const pData Data const * const pData 是不是有点晕? 我其实用得最多的是 const Data* pData, 也理解该语句是定义 pData指向的对象是不允许修改的(不能通过pData指针调用非const方法). 那么Data * c

const,指针与引用的关系

看完C++Primer第二章后,对于const,指针和引用以及后面的constexpr,auto之类的关系异常混乱,特此整理. 一.const必须初始化 const int i = 42; const int j = get_size(); 二.const 和 引用    1.常量引用(对常量的引用):将引用与一个常量对象绑定 const int ci = 42; const int &r1 = ci; 2.除此之外,允许一个常量引用绑定一个非常量的对象,字面值或表达式 int i = 42;

结合示例说明C++中const和指针结合时怎么理解

在之前随笔<C++中const使用要点(一)>中简单叙述了const int*.int* const和const int* const的区别,记住三句话就能在实际运用时用对,但是看书时发现了指针常量.常量指针这些名词,发现明白这些概念对阅读文章时还是比较重要的. 关键:const和指针结合时代码从右往左看 1.常量指针(const pointer) 概念:常量是形容词,也就是说常量指针是一个指针,用const修饰的指针. 按照代码从右往左(概念名词从左往右)的阅读顺序,不妨试着写一下. Ste

C++中的const和指针组合

在C++里,const修饰指针有以下三种情况 (1)指针常量:即指向常量的指针 const  int *p或者int const *p const在*前,,可以这样理解它的功能,因为const在*前,所以p指向的这个int变量对于*p来说是const的,即不能通过*p改变这个变量的值,但是变量本身可以随便改变自己的值.另外也可以改变p的指向. 例: int x=2; int y=3; const int *p=&x; *p=4;   //错误,不能通过*p改变变量的值 x=4;    //可以,

用const修饰指针

其实很简单,无奈老是记不住,那就单独写出来吧! a.指针本身不可变,即不可指向其他对象: char* const pContent = “abcde”; pContent[2] = ‘f’;     //合法 pContent = “abfde”;    //不合法 b.指针所指向的对象不可变,即指针不可以修改所指向的对象 const char *pContent = “abcde”; //或者 char const *pContent = “abcde”;     //上下两种情况相同 pCo