const int *p 与 int const* p 和const int const *p区别

有没有大神解答一下,小弟先谢过了(网上有人说是一回事,但是也有人说不是一回事,作为初学者,小弟懵了),那些和我一样的初学者或者不精通C指针的就别回答了,免得误导我(不好意思),求一个权威解答,(新注册的账号,没有什么分数,没法悬赏给分)

首先要清楚,我们是要定义一个指针p,就是要有*
所以,可以从*开始分左右。
---------------------------------------------------------
插入说明
1、const[空格]int[空格]*p 只是一种写法,
2、也可以写成const[空格]int[空格]*[空格]p。

3、也可以写成 const[空格]int*[空格]p,很老的编译器可能只支持这种写法。
下面我就不写[空格]了。
从语义上讲,第3种写法(int* p)比较直观,我们要定义的是一个指向int类型的指针:p
但是,这种写法最好一行只定义一个变量。
int* p,q;
q不是int类型的指针,而是int类型变量。
写成int *p,q;
就容易看出来了。当然,最好还是一行只定义一个变量。
int *p;
int q;
---------------------------------------------------------
刚才说了要从*开始左右分
const int *p 可以看成 (const int) * p

指向(常量、整型)的指针
---------------------------------
int const* p 写成 int const *p 比较好
可以看成 (int const) * p

和上一个一样,指向(整型、常量)的指针
--------------------------------
const int const *p
现在可以看出,这句是错误的。两个const都在*的左面。
正确的写法是const int *const p 或者 int const *const p
可以看成 (const int) * (const p) 和 (int const) * (const p)
指向 (常量、整型)的指针常量 和 指向(整型、常量)的指针常量
两者是一样的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-12-23
const
int
*p和int
*
const
p的区别如下:
const
int
*p表明指向的对象是const型,不可以修改,但是指针p的指向可以修改。
*
const
p表明指针变量p是const型,它的指向不可修改,但是指向的对象可以修改。
一般来说用*限定的是指针区域存放的内容,不用*的是内存地址。
第2个回答  推荐于2018-02-13
const int *p; // const修饰的是*p,因此*p是常量不能改变,但可以改变p的指向;
int const* p; // 同上,主要是看const与*的前后关系;
int* const p; // const修饰的是p,因此p的指向是常量不能改变,但*p可以改变;
const int* const p; // 两个const既修饰了*p也修饰了p,因此*p与p都是常量不能改变;本回答被网友采纳
第3个回答  2017-09-15
const int *p; // const修饰的是*p,因此*p是常量不能改变,但可以改变p的指向;
int const* p; // 同上,主要是看const与*的前后关系;
int* const p; // const修饰的是p,因此p的指向是常量不能改变,但*p可以改变;
const int *const p; // 两个const既修饰了*p也修饰了p,因此*p与p都是常量不能改变;
第4个回答  2019-05-25
没有任何区别,写法不一样而已,编译器会将这两种写法等同对待,表示指向一个const对象的指针。

const int *p 与 int const* p 和const int const *p区别
1、const[空格]int[空格]*p 只是一种写法,2、也可以写成const[空格]int[空格]*[空格]p。3、也可以写成 const[空格]int*[空格]p,很老的编译器可能只支持这种写法。下面我就不写[空格]了。从语义上讲,第3种写法(int* p)比较直观,我们要定义的是一个指向int类型的指针:p 但是,这种写法最...

谁能给我讲下const int *p和int const *p 和const int const*p
没有区别。const int p是指向const对象的指针,p指向的对象不能改(也就是*p的值不能改),但是p本身(地址)可以改。const int const*p是p本身不能改,它所指向的对象也不能改

const int *p和int * const p的区别
const int *p和int * const p的区别如下:const int *p表明指向的对象是const型,不可以修改,但是指针p的指向可以修改。const p表明指针变量p是const型,它的指向不可修改,但是指向的对象可以修改。一般来说用*限定的是指针区域存放的内容,不用*的是内存地址。

const int *p和 int const *p有区别?
没有任何区别,写法不一样而已,编译器会将这两种写法等同对待,表示指向一个const对象的指针。

一下语句含义: int * const P; int const *P; const int *p;
int * const P; 非常量数据,常量指针 const int const *P;常量数据,常量指针 const int *p; 常量数据,非常量指针

一下语句含义: int * const P; int const *P; const int *p;
采用"近水楼台先得月"的方法:即忽略数据类型的存在,再看const离谁最近.int const p:const 离p近,说明p的指向不能变,即p开始指向哪个变量就只能指向这个变量,不能更改.但p指向的变量可以变.int const p:const离*p近,说明p的指向可能变,但p指向的变量不可以变.const int p同int const p.

const int *p与 int const* p有什么不同
是 const int *p和int * const p吧 前一个指的是p指针所指的变量是一个定值,你不可以通过p来改变它的值 后一个指的是p是一个定值,你不可改变p的值,但是可以改变p所指向的值

const int, int* const的区别是什么?
const int是返回这个数值的一个常量的引用。而int是返回这个数值的一个拷贝。const作用:1、可以定义const常量,具有不可变性。例如:const int Max=100; Max++会产生错误。2、便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: void f(const int i) { ...} 编译器就会知道...

int const *p 和int *const p 一样吗
不一样。前者表明指向的对象是const型,不可以修改,但是指针p的指向可以修改;后者表明指针变量p是const型,它的指向不可修改,但是指向的对象可以修改。

c++:常量,const int,int const区别?
比如你看 (1) const int *p;和 (2) int * const p; 中const修饰的常量就不一样,(1)中去掉int变为 const *p ,(2)中去掉int * 变为 const p,这时你会发现const修饰的明显是不同的变量,const *p表示*p的数值为常量但p的值(地址)不是常量,const p 则表示p的值是常量。

相似回答