首页 > 试题广场 >

语言中哪一种形式声明了一个指向char类型变量的指针p,p的

[单选题]

语言中哪一种形式声明了一个指向char类型变量的指针pp的值不可修改,但p指向的变量值可修改?

  • const char *p
  • char const *p
  • char*const p
  • const char *const p
推荐
【正确答案】C
【解析】const 限定一个数据为只读属性。
1.const char p; 限定变量 p 为只读。
2.const char *p; p 为一个指向 char 类型的指针,const 限定 p 指向的数据为只读。所以 *p 的值不能被修改,而指针变量 p 本身的值可以被修改。
3.char * const p; 限定此指针变量为只读,所以 p 的值不能被修改,而 *p 的值可以被修改。
4.const char *const p; 两者皆限定为只读,不能修改。
 
const 和指针知识点讲解】
更多C++基础专业知识讲解,点击链接即可查看
https://www.nowcoder.com/link/zxyl-cpp83
编辑于 2021-11-18 08:34:06 回复(0)
C
const出现在*左边,如const char* p,表示p所指向的变量内容不可变,指针指向可以改变;
const出现在*右边,如char* const p,表示p是个常量指针,即不能指向其他变量,而指向的变量内容可变;
const出现在*左边和右边,如const char* const p,表示p的指向不能改变,指向的变量内容也不能改变。
编辑于 2021-11-18 08:34:06 回复(3)
由于没有 const *的运算,若出现 const * 的形式,则const实际上是修饰前面的。因此char const*p等价于const char*p。

编辑于 2015-08-10 23:24:28 回复(2)
const 出现在*左边,表示的是p所指的变量内容不可变,指针指向可以改变,也就是顶层const
const 出现在*右边,表示的是p是一个常量指针,不能指向其他的变量,但是指向的变量的内容可以改变,底层const
const在*左右两边都出现,表示指针指向不能改变,所指的变量内容也不能改变
发表于 2015-08-23 09:39:40 回复(1)
左定值右定向
发表于 2017-02-06 20:10:20 回复(0)
常量指针:
        常量是做修饰,指针是名词。即指针指向一个常量,指针指向的对象是常量,那么这个对象不能被更改。
        声明方式:
        1)const int *p;
        2)int const *p;
        常量指针的使用要注意,指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改,也就是说常量指针可以被赋值为变量的地址,之所以叫做常量指针,是限制了通过这个指针修改变量的值
        可以通过以下方式修改常量指针的内容:
           const int *c = &a;
           a = 6;
           const char *p = "abc";
            p[0] = 'x';
指针常量:
        指针是形容词,常量是名词。这回是以常量为中心的一个偏正结构短语。那么,指针常量的本质是一个常量,而用指针修饰它,那么说明这个常量的值应该是一个
        在C/C++中,指针常量这样声明:

        int a;

        int *const b = &a; //const放在指针声明操作符的右侧
        因为指针常量是一个常量,在声明的时候一定要给它赋初始值。一旦赋值,以后这个常量再也不能指向别的地址
        但是可以通过修改变量a的值来对指针常量b进行修改
        


发表于 2017-09-30 22:19:38 回复(0)
Effitive C++ :Tip03:Use const whenever possible
1、如果关键字const出现在星号左边,表示被指物是常量;// 读作“常量”(的)指针,常量不变,指针可变const char* p
2、如果出现在星号右边,指针自身为常量; // 读作指针(是)“常量”, 指针不变,被指物可变,char* const p;
3、如果出现在星号两边则,满足上述两种说明,指针以及被指物均为常量;

发表于 2017-03-05 22:52:39 回复(1)

左定值右定向

const出现在*左边,如const char* p,表示p所指向的对象内容不可变,指针本身可以改变;
const出现在*右边,如char* const p,表示p是个常量指针,即指针本身不能改变,而指向的对象可变;
发表于 2020-02-25 23:40:05 回复(0)

const (常量)后面有*(指针)号,即常量指针

*(指针)号后面有const (常量),即指针常量

常量指针:(error:常量是一个指针) 指向一个常量的指针,也可以指向其他量,指向地址可以变化。

指针常量: 指针是一个常量,指向地址不可变化,但是指向的地址里面内容可以变化。

发表于 2022-03-03 21:00:53 回复(0)
char const *p = greeting;
const char* p = greeting; //如果const在星号左边,不论类型与const前后,表示被指物是常量;
char* const p = greeting; //如果const在星号右边,表示指针自身是常量;
const char* const p = greeting; //如果const出现在星号两边,表示被指物和指针两者都是常量。
例子源自《Effective C++》
发表于 2021-04-29 22:46:19 回复(0)

常量指针声明:int const p;const int p;
指针常量声明:int const p=&a;*
常量指针是将一个常量的地址赋给指针,不允许通过指针来修改内存数据
指针常量是指针所指向的位置不能改变,即指针本身是一个常量
记住三句话!!!!!!!!!!!!!
指针和 const 谁在前先读谁 ;
象征着地址,const象征着内容;
谁在前面谁就不允许改变

发表于 2020-11-14 15:55:09 回复(0)
*const p const * p
发表于 2022-08-29 21:41:08 回复(0)
当*出现在const的右边,代表的是一个指向常量的指针,即指针的指向可以改变,但是指针所指向的对象不可以改变;
当*出现在const的左边,代表的是一个指针常量,即指针的指向不可以改变,但是指针所指向的对象可以改变;
当*同时出现在const的左边和右边时,代表该指针的指向不可以改变,同时该指针所指向的对象也不可以改变。
发表于 2022-03-27 09:21:03 回复(0)
“p的值不可 修改”:           p是一个指针变量,它的值是地址,因此p的指向不能变
“p指向的变量值可修改”:*p可以变

const的规则是左定值,右定向。
发表于 2021-05-27 09:16:08 回复(0)
const出现在*左边,如const char* p,表示p所指向的变量内容不可变,指针指向可以改变; const出现在*右边,如char* const p,表示p是个常量指针,即不能指向其他变量,而指向的变量内容可变; const出现在*左边和右边,如const char* const p,表示p的指向不能改变,指向的变量内容也不能改变。
发表于 2021-03-05 11:01:03 回复(0)
注意审题
发表于 2021-02-08 08:22:53 回复(0)
自我见解:
常量指针:指针一经初始化后 ,就不能改变指针指向的变量空间(即不能改变地址),只能对变量空间内的值进行修改
常量指针: 指针一经初始化后 ,就不能改变变量空间内的值,只能对指针指向的变量空间进行修改(即不能改变地址)
#include <stdio.h>

int main(void)
{

	int i=-1,j=7;
	int* const a = &i;
	//a = &j;   错误,不能对变量空间经行更改
	printf("%d\n", *a);
	*a = 5;
	printf("%d\n", *a);
	const int*  b = &i;
	b = &j;
	printf("%d\n", *b);
	//*b = 5;  错误,不能对变量空间内的值进行修改
	printf("%d\n", *b);
	return 0;
}

编辑于 2020-10-19 18:30:04 回复(0)
指针常量,常量指针,头有点点小晕
发表于 2020-09-04 15:08:35 回复(0)
有点混淆,还是太菜了。题目问的是谁是指针常量(指向的地址不可变)~
发表于 2020-08-09 15:45:43 回复(0)
const出现在*左边,如const char* p,表示p所指向的对象内容不可变,指针本身可以改变;
const出现在*右边,如char* const p,表示p是个常量指针,即指针本身不能改变,而指向的对象可变;
发表于 2017-09-02 16:10:33 回复(0)
区分的是 const 在 * 的左边还是右边
发表于 2017-02-21 20:35:06 回复(0)