常量指针,常量指针与变量指针的区别

http://www.itjxue.com  2023-01-07 00:02  来源:未知  点击次数: 

指针常量和常量指针的区别

常量指针,定义语法是 数据类型 const * 变量名;

如,int const * p1;

定义后可以改变该指针的指向却改变不了值。

指针常量,定义语法是数据类型 * const 变量名;

如,int * const p2;

和常量指针相反,可以改变值但是不可改变指向地址。

什么是常量指针,指针常量

①注意一下:

往往中文属于里形式如AB ,那么A是描述,B是本质。

比如 数据库管理系统 数据库管理是描述 系统是本质

比如 函数指针 函数是描述 本质是指针,这个指针指向函数地址

(那本质和描述的区别是?描述变了还是同一大类,本质变了就不是同一大类了)

②言归正传:

常量指针,也就是本质是指针,什么样的指针呢?常量类型的指针,什么叫常量类型的指针呢?

回忆一下函数指针,指向函数地址的指针。

那么常量指针,就是指向常量类型地址的指针。

比如const int * p;

而指针常量,本质是常量。

什么类型的常量?指针类型的常量,为了能够有个术语结构上的对比,你肯定知道整型常量,也知道是这么定义的:const int a;

但指针常量,是这么定义的 : int * const a;

const 在 *前面,是常量指针,const在*后面,是指针常量。

③这二者的区别就是:

const int *p 指向的是 const int a=2;的a;p可以变化但是*p不可以变化。

而int * const p=a; 意思是描述的是p,p不可变,就如const int a=2; a的值就不能再改变了。那么p不可以变,但是*p可以变。

还有一种是 综合一起的,const int * const p=a; 这种一旦确定值,*p和p都不能变化。

c语言中指针常量和常量指针分别是什么意思

根据汉语的语法规则,这是一个偏正短语,中心在后面前面的是形容词。

所以指针常量是:

一个常量值,即确定的不会发生变化的值。指针这个形容词怎么理解呢?说明这个常量对应的是一个指针的值。举个例子就像你的出生地址,这可以理解为一个指针常量。

常量指针呢?说明这个数据类型是一个指针,这个指针存储的是什么呢?是一个常量的地址。

常量指针和指针常量有什么区别

区别:

1、本质

指针常量:本质上一个常量,指针用来说明常量的类型,表示该常量是一个指针类型的常量。

常量指针:本质上是一个指针,常量表示指针指向的内容,说明该指针指向一个“常量”。

2、地址

指针常量:在指针常量中,指针自身的值是一个常量,不可改变,始终指向同一个地址。在定义的同时必须初始化。

常量指针:指针可以指向其他地址

3、内容

指针常量:指向的内容可以修改

常量指针:在常量指针中,指针指向的内容是不可改变的,指针看起来好像指向了一个常量。

扩展资料

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值或者叫指针所指向的内存区、指针本身所占据的内存区。

从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。

当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。

从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。

指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32 位程序里,所有类型的指针的值都是一个32 位整数,因为32 位程序里内存地址全都是32 位长。指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为si zeof(指针所指向的类型)的一片内存区。

在32 位平台里,指针本身占据了4 个字节的长度。指针本身占据的内存这个概念在判断一个指针表达式(后面会解释)是否是左值时很有用。

参考资料:百度百科 - 指针

const指针是常量指针还是指针常量?

取决于const 的位置

比如常见的char *

如果定义

const char *p;

那么 这个是常量指针, const 修饰的是*p 表示 *p是不能改变的。

而如果是

char * const p;

这个就是常量指针, 表示p不能修改。

而如果是

const char * const p;

就是指向常量的指针常量。

在实际应用中,常量指针 更为多见。

指针常量 指向常量的指针各是怎么定义的

其实就是const char*, char const*, char* const 三种写法的区别

C++标准规定,const关键字放在类型或变量名之前等价的。

所以const int n=5; 和 int const n=10; 是等价的,表示的是n是一个整型常量

同理,const int *p; int const *p; 是等价的,表示的是p是一个指向一个整型常量的指针

那么另外一种写 int * const p,这里const 修饰的int *,即常量指针,也就是p是一个不可以被修改的指向一个整型的常指针,它与 const (int *) p 是一个类型

(责任编辑:IT教学网)

更多

推荐linux文章