首页 > 试题广场 >

const char *p 说明了 p 是指向字符串的常量指

[单选题]

const char *p 说明了 是指向字符串的常量指针。

  • 正确
  • 错误
指针常量,常量指针这一概念没错吧,难道是指向字符的指针?

发表于 2020-12-11 14:27:42 回复(0)
点赞最高的描述并不正确,这里涉及两个概念,常量指针Pointers to const,和指针常量 const Pointers
常量指针 表示的是一个指向常量的指针,即指针(自身存放的地址)是可变的,但不能通过这个指针来修改它所指向的内容。也就是说你可以用常量指针指向一个非常量对象,这个非常量可以通过其他途径来改变,但是这个指针 "认为" 它就是指向了一个常量,所以它认为任何去修改它所指向的对象的行为都是不对的,因此我们操作常量指针时不能去修改它所指向的对象(不管是常量还是非常量)
指针常量 则是说明这个指针就是一个常量,即指针(自身存放的地址)是不可变的,在声明的时候一定要初始化,且一旦初始化,以后这个指针常量就不能再指向别的地址了。
举个例子就是
const char *p1; //a pointer to const 
//一个常量指针,指向一个字符串,这个字符串可以是常量也可以是非常量字符串,但是不能通过p来修改字符串里的值

char A[]="abcd";
char *const p2=A;//a const pointer
//一个指针常量

所以让我理解这道题,我觉得题干所表达的意思就是正确的,那要么是答案错了,要么是题干描述得不够准确?再不就是还有什么知识点我没理解正确,希望有大佬解答
发表于 2019-08-14 15:55:35 回复(8)
const char *p  表示 p是指向常量字符串的指针。
char* const p 表示p是指向字符串的常量指针。
发表于 2017-05-19 17:16:20 回复(1)
const 位于*号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
const位于*号的右侧,const就是修饰指针本身,即指针本身就是常量。

再结合其他人的情况综合理解
发表于 2017-07-07 21:09:52 回复(0)
const char *p  
const默认修饰左边 当左边没有的时候才会修饰右边
那么const在这里修饰char
表示 p是指向常量字符串的指针。
常量指针  指向常量的指针
因为它指向的是一个常量  对吧?
p表示指针 对吧?指向它  证明存它的地址
那么解引用肯定能够得到它  它是什么? 
它被const修饰
所以它是常量。。。
因此不可以进行*p=1  *p=2  这种解引用之后的赋值操作
char* const p 表示p是指向字符串的常量指针   
const默认修饰左边 当左边没有的时候才会修饰右边
那么const在这里修饰*
即是指针常量  指针指向的地址不会发生变化
即是不可以进行p+1 p+2 等等这种类似的操作
这种解释不知道你们能不能理解  如果不理解欢迎在评论区指正 谢谢大家啦
编辑于 2021-11-06 10:25:40 回复(0)
工作交流中我只用const pointer和pointer to const这两种说法。“常量指针”这种简写就是来增加交流理解障碍的,是用来找骂的。常量指针是个指针,汉语文化博大精深,如果“常量”是个形容词,那它就是常量(性质的)指针的缩写。如果它不是个形容词,那它就是(指向)常量(的)指针。写完整不就很直观又没二义性了吗?还有些不嫌事大的还去进一步简写,说“常量指针又称为常指针”,常,const,指针,pointer,常指针,const pointer?然后说啊不对,正确答案是常指针是常量指针,常量指针是指向常量的指针所以是pointer to const。那你就用“指向常量的指针”不就完了吗?自作聪明在那故弄玄虚地简写是欠抽吗?😡
发表于 2023-06-19 16:34:54 回复(1)
按照《C++ primer》第五版中的定义:
const int * 代表指向常量的指针
int *const 代表常量指针。
这一定义和网上大多数的 "常量指针以及指针常量" 的定义是不同的。
发表于 2022-02-20 14:16:49 回复(1)
首先常量指针是没错的,我的理解为:它不止能表示指向字符串的常量指针,还是表示指向字符的常量指针。
编辑于 2020-12-19 11:21:20 回复(0)
应该是指向字符,不能是指向字符串
发表于 2023-06-13 16:14:37 回复(0)
这道题,1、const char a = 'c'; const char* p = &a; 2、const char* p = "abc";指向字符的常量指针。
发表于 2023-04-29 21:44:05 回复(0)
不一定指向字符串?可以指向任何常量,错在这里?
编辑于 2024-01-04 14:53:51 回复(1)
如果从常量指针还是指针常量来看,这道题有点问题,题中说是p是指向字符串的,但p还可以指向一个字符,即p=‘a’
发表于 2023-12-12 13:13:04 回复(0)
指向常量字符的指针
发表于 2023-11-01 11:49:46 回复(0)
这句话是正确的。 

"const char *" 表示这是一个指向字符类型的指针。而 "const" 关键字在这里表示指针指向的字符串是常量,即该字符串内容不可改变。所以,这个指针指向的是一个字符串常量。 
发表于 2023-04-06 21:21:03 回复(0)
感觉应该这样说,const char* p表示常量指针没问题,const char* p是指向字符串常量的指针
发表于 2022-08-05 00:09:19 回复(0)
两种理解:1,p是指针,指向地址; 2,p也可能指向的是单个字符;
发表于 2022-07-03 01:13:37 回复(0)
我觉得这句话是正确的,但考虑到牛客出题的尿性,我选了B,果不其然😅😅😅
发表于 2022-03-12 22:23:36 回复(1)
low-level const,指向一个常量字符串。high-level const,指向不变的指针。
发表于 2021-07-06 21:43:42 回复(0)
const char *p  表示 p是指向常量字符串的指针。 char* const p 表示p是指向字符串的常量指针。
发表于 2021-05-19 20:07:13 回复(0)
写个范例就搞定了:
const char a= 'A';
const char *p = &a;
(p没有指向字符串)
发表于 2020-09-28 11:39:36 回复(1)