Duanxx的C++学习: const指针具体解释

Const指的是一个编译时的常量。

keywordconst使得代码能够确定一个变量能否够被改动。

使用了const后,能够防止对变量或者指针的改动;更重要的是,const的引用能够防止对所引用的对象的改动。

一般来说,在C语言中,对于一些常量的定义,我习惯性的使用define,而在C++中则最好改为使用const。

对于嵌入式程序而言,const的使用则是相当的微妙的,被const修饰后,其变量是存放在ROM中的,这一点非常重要。

关于Const的指针的使用,文字讲解没有意义,直接參见以下的代码及凝视:

#include <iostream>
// const
// - a compile time constraint that an object can not be modified

int main()
{
	const int i = 1;
	int a = 0;
	const int *p1 = &i;		///< data is const ,but pointer is not

	int* const p2 = &a;	    ///< pointer p2 itself is const ,but the data p2 point to is not const
	//int* const p3 = &i;     ///< illegal , cannot convert from 'const int *' to 'int *const '
	int const* p4 = p1;      ///< if const is on the left of *,data is const
						///< if cosnt is on the right of *,pointer is const

	const int* const p5 = &i; ///<the data and the pointer are both const

	return 0;
}
时间: 2024-10-16 16:18:40

Duanxx的C++学习: const指针具体解释的相关文章

深入学习 const指针,const引用

指针和引用的区别: 1.指针可以为空,引用不可以为空. 2.指针初始化后可以重新指向新对象,引用初始化以为不可以重新绑定新对象, 3.指针可以在初始化时赋值,可以初始化以后通过赋值运算符(=)赋值:引用只能在初始化时赋值. 4.指针是个实体(占内存4byte),引用只是个别名(不占内存) 5.指针sizeof是4byte,引用sizeof是绑定对象的大小. 6.指针是类型安全,引用是类型安全的. const对于指针和引用的区别: int a = 1: int b = 1: const int *

算法导论学习---红黑树具体解释之插入(C语言实现)

前面我们学习二叉搜索树的时候发如今一些情况下其高度不是非常均匀,甚至有时候会退化成一条长链,所以我们引用一些"平衡"的二叉搜索树.红黑树就是一种"平衡"的二叉搜索树,它通过在每一个结点附加颜色位和路径上的一些约束条件能够保证在最坏的情况下基本动态集合操作的时间复杂度为O(nlgn).以下会总结红黑树的性质,然后分析红黑树的插入操作,并给出一份完整代码. 先给出红黑树的结点定义: #define RED 1 #define BLACK 0 ///红黑树结点定义,与普通

【C语言学习】指针再学习(二)之数组的指针

★一维数组 一个整型数据为4个字节.4个字节就是32位,即可以表示2^32个数字 在程序中定义一个数组a[5] = {1,2,3,4,5}; 那么a[0]的地址就是0x00000000,数组名a是数组首元素的地址,a的地址也是0x00000000.a+1则表示的地址是0x00000004,而不是0x00000001.因为1这个值,根据前面的指针a所指向的类型的长度来调整自己的长度.也就是说如果a是指向整型的指针,那么后面加的1也表示4个字节,如果a是指向字符型的指针,那么后面加的1表示1个字节.

Duanxx的神经网络学习: 自己动手写神经网络(二) 前馈网络的实现

本文是继续Duanxx的神经网络学习: 自己动手写神经网络(一) 搭建一个简单的网络框架 写的第二篇文章,将神经网络的前馈网络实现并测试. 本文的代码下载地址 1 为神经元Neuron添加权Weight 在上一篇文章中,我已经搭起了一个神经网络的框架. 但是那只是一个框架而已,什么都没有是实现,而这个框架的最基本的东西就是神经元Nenron,这里就考虑将Neuron实现一下. 对于一个神经元而言,它的输入是上一层神经元的输出,可以不用太关心,它也有自己的输出outputvalue,同时,它还要控

c语言指针详细解释

指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最基本的风格之中的一个.利用指针变量能够表示各种数据结构: 能非常方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序.指针极大地丰富了C语言的功能. 学习指针是学习C语言中最重要的一环, 是否能正确理解和使用指针是我们是否掌握C语言的一个标志.同一时候, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必需要多编程,上机调试.仅仅要作到这些,指针也是不难掌握的. 指针的基本概念 在计算

Objective-C中,ARC下的 strong和weak指针原理解释

Objective-C中,ARC下的 strong和weak指针原理解释 提示:本文中所说的"实例变量"即是"成员变量","局部变量"即是"本地变量" 一.简介 ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain.release.autorelease语句.你不再需要担心内存管理,因为编译器为你处理了一切 注意:ARC 是编译器特性,而不是 iOS 运行时特性(除

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

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

Duanxx的图像处理学习: 透视变换(二)

在<Duanxx的图像处理学习:透视变换(一)>中简要的说明了透视变化的算法,这里再进一步的对透视变换做说明. 基于前面的说明,可以很容易发现, 一个变换矩阵有如下你的分区特性: 一般来说,我有一个三维变换矩阵如下: 矩阵中的元素(p , q , r)取非全0时,能产生透视效果 一.一点透视 来看下面一张图: 现在是以z轴上的一点(0,0,d,1)为投影中心,计算P(x,y,z,1)点在XOY平面上的透视投影. 那么,现在很容易知道: 即: 这里取: 那么变换矩阵T,就为: 结果的其次坐标表示

const指针

const指针有三种形式: 1)const出现在*左边 2)const出现在*右边 3)   const出现在*两侧 const出现在*左边表示被指对象是常量:出现在右边表示指针自身是常量:出现在两侧表示被指对象和指针本身都是常量. 另外, int const *p与 const int *p是等价的,即只有当const与*相对位置发生变化才有区别. const指针,布布扣,bubuko.com