c++指针常量和常量指针概述】的更多相关文章

个人理解,欢迎指正 这个简单,简单,简单(不要有心里压力:认为很难) 本文将会解决:  A.变与不变 B.判断指针常量和常量指针. C.常量指针指针常量.本文不涉及. 1.概述 A.指针: 说到底,还是地址, 但是这个地址需要用一个变量保存起来, B.为什么? 因为地址随机化.每个进程被创建的时的起始地址时不一样,基址不一样(为什么不一样?可以找下相关资料,每台计算机的运行情况不同,那么内存使用也是不同的,这就形成了地址多样化,如果固定进程起始地址,A机器可以运行程序,到了B机器可能就无法了,程…
c语言中声明常量的两种方式 const int value int const value 如果要声明常量的指针,即指向常量的指针,则可以参考上面的常量声明修改一下 const int *ptr int const *ptr 把*ptr看成一个整体,那么*ptr中的ptr就是指向常量的指针了.顾名思义,指向常量的指针,那么就不可以通过这个指针去修改这个值了. #include <stdio.h> int main(){ int val = 123; int const *ptr = &…
当const遇到指针 一般来说,const修饰指针可以分为下面的集中情况. 描述 例子 含义 备注 const在*的左边 const int *b=&a; int const *b=&a; const修饰指针指向的变量,也就是说我们不能通过修改指针b 指向的值去修改a.即*b=100;这种操作是错误的. 这时候,指针b本身不是常量,*b是常量. 这种情况下,如果要修改*b返回的值,也就是修改指针b所指的对象可以用两种办法: · 改变b指向的变量a的值,a=100; ·让b指向别的变量,in…
在C++学习使用过程中,每个人都不可避免地使用指针,而且都或多或少的接触过常量指针或指针常量,但是对这两个的概念还是很容易搞糊涂的. 本文即是简单描述指针常量和常量指针的区别. 常量指针 定义: 又叫常指针,可以理解为常量的指针,也即这个是指针,但指向的是个常量,这个常量是指针的值(地址),而不是地址指向的值. 关键点: 1.常量指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改:          2.常量指针可以被赋值为变量的地址,之所以叫常量指针,是限制了通过这个指针修改…
熟悉C++也已经有一些年头了,今天突然翻出当年浏览的书籍,对一些概念居然生疏了,指针常量和常量指针由于 指针 这一特殊的对象而变得难以区别.因此,在思考再三之后,决定写下该篇总结,加强对他们的区别: 转载请注明出处: http://blog.csdn.net/elfprincexu 1. 常量指针 (const __type__ *) 常量指针,通常形式是const位于*左侧,C++primer定义为底层const指针,我们可以这样理解,常量指针以为“常量的指针”,形容词为常量,指针为名词.也就…
[转]作者:xwdreamer   出处:http://www.cnblogs.com/xwdreamer 对于指针和常量,有以下三种形式都是正确的: const char * myPtr = &char_A;//指向常量的指针 char * const myPtr = &char_A;//常量的指针 const char * const myPtr = &char_A;//指向常量的常量指针 下面依次对这三种类型进行介绍. 因为*操作符是左操作符,左操作符的优先级是从右到左,对于…
1.指针常量(*const):对应指针变量,即指针本身是常量,指针指向的内容可以被修改. 2.常量指针(const*):常量的指针,即指针指向的内容不能被修改,但指针本身是变量,可以被修改.…
常量指针定义:常量是形容词,指针是名词,以指针为中心的一个偏正结构短语.这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针.指针指向的对象是常量,那么这个对象不能被更改.常量指针的使用要注意,指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改,也就是说常量指针可以被赋值为变量的地址,之所以叫做常量指针,是限制了通过这个指针修改变量的值. 在C/C++中,常量指针是这样声明的: 1)const int *p; 2)int const *p; 例子: int…
#include<stdio.h> #include<string.h> int main() { ] = "abcd"; //常指针a指向字符串常量"abcd"的首地址,a不能被改变(不可作为左值被重新赋值) char *f = "abcd"; //f指向"abcd",上面a和这个f除了a是常指针之外没有区别,f可以作为左值 ] = "safajshjf"; //常指针b指向&qu…
(1)指针常量,将指针的指向当成常量.即指针变量的值只能在定义的时候初始化,定义后不能修改,也就是说不能改变指针变量的指向.但是不影响所指对象的访问特征.其定义形式为: 类型 * const 指针 //类型是该指针所指对象的类型,*为指针类型说明符. 实例1: ; ; //初始化指针常量, int *const const_P1 = &var1; //指针常量值定义指针的指向不能修改, //如,这里将const_P1指向var2的地址,就错了, //下面的语句会报错 const_P1 = &…
const char * myPtr = &char_A;//指向常量的指针 char * const myPtr = &char_A;//常量的指针 const char * const myPtr = &char_A;//指向常量的常量指针 1.指针常量 **从字面意思可以看出,指针是一个常量,也就是地址不能被修改. #include <iostream> using namespace std; void main() { int a = 10; int cons…
1.const 常量概念 对于 const 定义的常量,必须在定义时初始化,不能在程序执行运行过程中改变. 2.指针常量.常量指针 区别 (1)技巧:从右向左读,替代方法: p:换为  p is a: * :换为  point to  : (2)const 在  *  左边:表示,指针指向为常量,不能改变内容: const 在  *  右边:指针本身是常量,指针不能改变,但可以改变内容: // p is a point to int const, 所指存储空间内的值是一个常量,不可改变内存 co…
常量,该指针所指向的值为只读 ; const int * p = &a; 常指针,该指针的值为只读,不可再指向其他地址 const * const p = &a; 常值,常指针 const int * const p = &a; 判断标准,看const 修饰的对象,const 修改int就是常值,const修饰p就是常指针…
1.常量指针 定义:具有只能够读取内存中数据,却不能够修改内存中数据的属性的指针,称为指向常量的指针,简称常量指针. 声明:const int * p; int const * p; 注:可以将一个常量的地址赋值给一个对应类型的常量指针,因为常量指针不能够通过指针修改内粗数据.只能防止通过指针引用修改内存中的数据,并不保护指针所指向的对象. 2.指针常量 定义:指针常量是指指针所指向的位置不能改变,即指针本身是一个常量,但是指针所指向的内容可以改变. 声明:int * const p=&a; 注…
注:该文主要来源于 网易公开课之<C++ 程序设计入门(上)>课件. 在 C 语言标准中,const 修饰的变量称之为 只读变量, 在 C++ 语言标准中,const 修饰的变量称之为 常量, 例: const int ARRAY_LEN = 100; int array[ARRAY_LEN];    //该语句在C++ 编译器中是可行的,但是在C编译器中是会报错的 以上是 const 在 C 和 C++ 中的差别,下边主要介绍 const 与指针: 1. 指针的两个属性 a. 指针变量本身…
想当初面试时,面试官问我熟悉C++么?熟悉的话说一下const的用法,然后我就开始凌乱了~ 其实const的用处还真不少,好好捋顺一下会有很大的帮助. 有时候我们希望定义一种常量,它的值不能被修改,这个常量既可以防止程序其他地方不小心修改这个值,也能让程序员比较方便的调整这个值的大小. 以往我们很容易想到#define宏定义,现在使用const是个更为不错的选择,因为它有类型,可以进行类型检查. 第一部分:const的初始化 Const值一旦创建后就不能修改,所以const对象必须初始化. Co…
为了区分是指向常量的指针还是const指针(表示指针本身是常量) 一个简便方法:从由往左读,遇到p就替换为“p is a”,遇到*就替换为“point to”,其余不变. const int * p :// p is a point to int const ,p是一个指向常量的指针,指向的对象是一个常量,所以不能改变 *p(p指向内存地址)的值,但是p可以指向其它地址 int * const p:// p is a const point to int, p是一个常量指针,指向int,所以不能…
先看下面六种写法: . const int p; . const int *p; . int const* p; . int * const p; . const int * const p; . int const * const p; 那么我们应该怎么区分上面的写法到底是指向常量的指针还是const指针(表示指针本身是常量)呢? 一个简便方法:从由往左读,遇到p就替换为“p is a”,遇到*就替换为“point to”,其余不变. 下面我们来一个一个看: . const int p; //…
#include <stdio.h> /* 指针常量 和常量指针 指向常量的指针常量 */ int main() { int a = 100; int b =200; int* const p1 = &a; int const* p2 = &a; *p1 =400;//正确 //p1 = &b; //错误:指针常量 不内改变他的地址 //*p2 = 300; //错误:常量指针不能改变单元中的值 p2 = &b; //正确 return 0; } 总结: 常量指…
三个名词虽然非常绕嘴,不过说的非常准确.用中国话的语义分析就可以很方便地把三个概念区分开. 一) 常量指针. 常量是形容词,指针是名词,以指针为中心的一个偏正结构短语.这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量). 指针指向的对象是常量,那么这个对象不能被更改. 在C/C++中,常量指针是这样声明的: 1)const int *p; 2)int const *p; 常量指针的使用要注意,指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改,也…
这2个概念非常容易混淆,即使是老鸟,也有眩晕的时候,写此博文,加深记忆... 指针常量:一个指针,并且它是一个常量,它的值不许被改变: char *const p1 = "Hello!"; //必须在定义的时候初始化,因为它是常量 p1 = "NiHao!"; //错误,不允许对常量赋值 常量指针:一个指针,并且它指向对象是一个常量(不许改变),但该指针本身的值可以被改变: const char *p2 = "Hello!"; //可以不初始化…
1.reinterpret_cast<type_id>(表达式)的作用: type-id 必须是一个指针.引用.算术类型.函数指针或者成员指针.它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针.type_id的作用是在赋值的时候用到 int i5=reinterpret_cast<int>(p);//前面是int,所以方括号里的也是int #include <iostream> using namespace std; int main() { char…
欢迎指正 代码写的不够规范: 目的是缩短文章篇幅,实际中请注意 阅读完本文, 你一定能判断和写出:指针函数和函数指针. 0.结论 A.指针函数: 函数的返回值是指针类型 B.函数指针: 函数名是一个指针 1.分析 A.一定出现在函数. B.关键词: 函数和指针. C. 函数, 包括返回值类型.函数名.函数参数 D.指针: 地址运算符*  和 指针变量 E.排除函数参数.那么就剩下 函数返回值类型 和 函数名了. F .函数和变量一样,也是有地址的. 函数名就是函数的地址. 一个例子:xcode输…
转载于http://blog.csdn.net/hinyunsin/article/details/6662851     前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本所在.相信,任意一家公司如果想要考察一个人对C语言的理解,指针和数组绝对是必考的一部分. 但是之前一方面之前一直在忙各种事情,一直没有时间静下心来写这些东西,毕竟这确实是一件非常耗费时间和精力的事情:一方面,个人对C语言的掌握和理解也还有限,怕写出来的东西会对大家造成误导.当然,今天写的这些东西也肯…
例一:指针函数 指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 类型标识符    *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量. 指针函数:当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中. #include "stdio.h"…
前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本所在.相信,任意一家公司如果想要考察一个人对C语言的理解,指针和数组绝对是必考的一部分. 但是之前一方面之前一直在忙各种事情,一直没有时间静下心来写这些东西,毕竟这确实是一件非常耗费时间和精力的事情:一方面,个人对C语言的掌握和理解也还有限,怕写出来的东西会对大家造成误导.当然,今天写的这些东西也肯定存在各种问题,不严谨甚至错误的地方肯定有,也希望大家来共同探讨,相互改进. 我会慢慢的写完这几章,有想法的童鞋可以和我探讨…
一 数组的结构:顺序存储,看谭浩强中的图,牢记 1.数组名指代一种数据结构:数组 现在可以解释为什么第1个程序第6行的输出为10的问题,根据结论1,数组名str的内涵为一种数据结构,即一个长度为10的char型数组,所以sizeof(str)的结果为这个数据结构占据的内存大小:10字节. 再看: . ]; . cout << sizeof(intArray) ; 第2行的输出结果为40(整型数组占据的内存空间大小). 如果C/C++程序可以这样写: . ] intArray; . cout &…
原文:深入理解C指针之一:初识指针 简单来说,指针包含的就是内存地址.理解指针关键在于理解C的内存管理模式.C里面有三种内存: ①.静态全局内存(生命周期从程序开始到程序结束,全局变量作用域是全局,静态变量作用域在定义它们的函数内部): ②.自动内存(在函数内部声明的变量,在函数被调用时创建,作用域和生命周期都在函数内部): ③.动态内存(内存分配在堆上,根据需要释放,通过指针引用,作用域局限于引用的指针): 下面先来声明一个指针并打印其地址和值,这里p%指的是以十六进制的形式返回数据: #in…
c++中的char指针 这个char指针很有意思,char指针通常有两种初始化形式.一个是使用char数组初始化,一个是使用char变量初始化. c++当中使用双引号括起来的字符串起始已经被编译器初始化为一个const char[]类型的字符串常量.也就是说"hedd"在赋值给其他变量或常量时实际上是将一个已经在内存中分配了地址的const char数组的头指针赋值给它.如果你使用's'这样的数字量是不能直接赋值给char指针的,因为's'是一个字符而不是拥有内存的字符变量或常量.这种…
C++this指针 在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址.this 指针是所有成员函数的隐含参数.因此,在成员函数内部,它可以用来指向调用对象.友元函数没有 this 指针,因为友元不是类的成员.只有成员函数才有 this 指针.下面的实例有助于更好地理解 this 指针的概念: #include <iostream> using namespace std; class Box { public: // 构造函数定义 Box(double l=2.0, doub…