首页 > 试题广场 >

有以下语句定义 &n...

[不定项选择题]
有以下语句定义
int x =5;
const int * const p = &x;
const int &q=x; 
int const *next=&x;
const int *j=&x;
则有语法错误的是()
  • * p =1;
  • q++;
  • next++;
  • (*j)++;
A.p是指针常量,*p是代表x的值,被定义为常量,不可再赋值,A错;
B.&q是对x变量的引用,但被定义为了常量,故q不再是变量,不能自增,B错;
C.如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量,故x为常量,不能改变,但是next指向x的地址,next++表示改变地址,故c选项无语法错误;
D.(*j)++表示x的值自增,但是const int *j=&x表示x为常量,不能改变,故d错误;
此题主要考察指针与地址的关系,地址与引用的区别,const在不同位置的作用,深入了解可参考相关博文:

发表于 2020-04-10 20:54:59 回复(1)
如果const出现在星号(*)的左边,指针指向的数据为常量; 如 const int A = 100;

如果const出现在星号(*)的右边,指针本身为常量; 

如果const在星号(*)的两边都出现,二者都是常量。

另外int const 和const int作用一样
编辑于 2020-04-04 18:19:30 回复(0)
p 是常量,*p 是常量,故A 错。 q 是常引用,不可修改,故B 错。 j 指向的内容是常量D 错
发表于 2019-08-30 18:02:23 回复(1)
1>p是指向常量的常量指针,(*p)是常量不能再赋值,
2>q是常量的引用,不能赋值
3>next是指向常量的指针,next本身可以改变
4>j是指向常量的指针,值不能改变
发表于 2020-03-22 15:17:52 回复(0)
next不是常指针吗
发表于 2020-04-02 16:11:05 回复(0)
const修饰指针
  • 如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量
  • 如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量
发表于 2020-09-17 10:39:14 回复(0)
const 在*前:指向常量的指针。指针所指向的数据为常量,数据不可改变。
const 在*后:指向变量的常量指针。指针本身是常量,不可指向其它地址。

引用无法放在const之后,所以按照一般的声明类型处理即可。
推荐英文水平良好的朋友看看这篇,解析C语言变量声明的顺时针规则:c-faq.com/decl/spiral.anderson.html
编辑于 2021-02-19 20:48:28 回复(0)
左定值,右定向。可修改值的是指针常量,可修改指向的是常量指针。
const在*左边,const int *p 或者 int const *p 是常量指针,里面的值不能通过指针修改,指针的指向可以改变。
const 在*右边,int * const p  是指针常量,指针指向的值可以修改,指针的指向不能修改。
指向常量的常量指针,int const * const p = &a;
A 第二行,这是一个指向常量的常量指针,指针的指向不能修改,里面的值也不能通过指针修改。
B  常引用,里面的值不能通过q修改
C  指针常量,里面的值不能通过指针修改,指针的指向可以修改。next++ 修改指针的指向
D (*j) = (*j)++ ;里面的值不能修改。
发表于 2023-10-16 20:41:54 回复(0)
消失的眼角膜,q是引用看成指针了,引用不能更改地址
发表于 2023-08-29 16:06:37 回复(0)
const 在*前:指向常量的指针。指针所指向的数据为常量,数据不可改变。 const 在*后:指向变量的常量指针。指针本身是常量,不可指向其它地址。 左定值,有定向。
发表于 2023-08-27 22:42:00 回复(0)
我选了c,人傻了
发表于 2023-07-27 19:14:58 回复(0)
const出现在*的左侧,则指针指向是不能改变的,const出现在*的右侧,则指针指向的值不能改变
发表于 2023-04-04 11:22:40 回复(0)
发表于 2023-02-24 15:51:38 回复(2)
int x =5; const int * const p = &x; 锁值又锁地址 const int &q=x; 取别名 int const *next=&x; 锁地址 const int *j=&x;锁值
发表于 2022-07-11 17:40:20 回复(0)
next不是常指针嘛?int const *next = x;求大佬解答
发表于 2021-04-28 23:50:02 回复(1)
<p>这个c不对吧,解答怎么一堆说对的</p>
发表于 2020-07-12 17:34:16 回复(0)
1定义常量 const int ==int const 2定义指针 int * const p 指针为常量/ const int *p == int const *p 指针指向内容为常量 /const int * const p 两者都是常量
编辑于 2020-03-16 11:28:07 回复(0)