野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 811092|回复: 1787

【每日一题】const的作用 [嵌入式校园招聘笔试题]

  [复制链接]
发表于 2014-10-13 08:58:40 | 显示全部楼层 |阅读模式
该题目经常被全国各大公司用于校园招聘笔试题目

知识点:关键字 const的作用
题目:

[code=c]
1、const int a;
2、int const a;
3、const int *a;
4、int * const a;
5、int const * a const;[/code]

答案:答题回复可见,请做题。
1、a是一个常整型数
2、a是一个常整型数
3、a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)
4、a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)
5、a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)

总结:const 关键字的作用
1、只读

2、使用关键字const也许能产生更紧凑的代码

3、使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改

回复

使用道具 举报

 楼主| 发表于 2014-10-13 09:01:52 | 显示全部楼层
看 const 的作用的时候有一个技巧就是:看修饰变量的const的位置,我们以就近原则,
如果const靠近变量那个这个变量就是不能修改的,当变量不能修改的是就谈不上数据类型了。
如果靠近的是数据类型,那么这个数据类型就是不能修改,但是变量可以修改。
回复 支持 3 反对 0

使用道具 举报

 楼主| 发表于 2014-10-13 09:02:57 | 显示全部楼层
这里再补充一个问题: const 一般常用在什么地方? 这个题目也被很多嵌入式校招题目用到

在STM32的库里面,const这个关键字那可是到处飞啊。

库文件 core_cm3.h
第113行
[code=c]  #define     __I     volatile const          /*!< defines 'read only' permissions      */[/code]

这里的const就表示只读的意思
回复 支持 3 反对 0

使用道具 举报

发表于 2014-10-13 09:13:44 | 显示全部楼层
走过路过,不能错过帅呆了,赞一个
回复 支持 1 反对 0

使用道具 举报

发表于 2014-10-13 09:20:41 | 显示全部楼层
const只读变量,即变量保存在只读静态存储区。编译时,如何尝试修改只读变量,则编译器提示出错,就能防止误修改。
1.a的值是不可变的
2、a的值是不可变的
3.*a的值不可变
4.a不可变,*a可变
5.两个都不可变
回复 支持 5 反对 1

使用道具 举报

 楼主| 发表于 2014-10-13 09:23:28 | 显示全部楼层
高江涛 发表于 2014-10-13 09:20
const只读变量,即变量保存在只读静态存储区。编译时,如何尝试修改只读变量,则编译器提示出错,就能防止误 ...

标准答案         
回复 支持 4 反对 0

使用道具 举报

 楼主| 发表于 2014-10-13 09:23:35 | 显示全部楼层
高江涛 发表于 2014-10-13 09:20
const只读变量,即变量保存在只读静态存储区。编译时,如何尝试修改只读变量,则编译器提示出错,就能防止误 ...

比雷公还雷人哦~
回复 支持 0 反对 1

使用道具 举报

发表于 2014-10-13 09:24:10 | 显示全部楼层
真不太清楚这个关键字强烈支持,看看答案强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2014-10-13 09:24:14 | 显示全部楼层
aaa抢沙发~给哥们顶一个强烈支持,非常感谢哥们笑坏我的肚子了走过路过,不能错过比雷公还雷人哦~帅呆了,赞一个
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-13 09:27:27 | 显示全部楼层
hzx623 发表于 2014-10-13 09:24
aaa抢沙发~给哥们顶一个强烈支持,非常感谢哥们笑坏我的肚子了走过路过,不能错 ...

看来快捷回复我应该改一下
回复 支持 反对

使用道具 举报

发表于 2014-10-13 09:31:03 | 显示全部楼层
fire 发表于 2014-10-13 09:23
标准答案

这个是你以前出过的题    强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2014-10-13 09:33:50 | 显示全部楼层
学习下,不太明白
回复 支持 反对

使用道具 举报

发表于 2014-10-13 10:01:59 | 显示全部楼层
不知道啊,看看答案
回复 支持 反对

使用道具 举报

发表于 2014-10-13 11:04:49 | 显示全部楼层
ccccccccccccccccccccccc
回复 支持 反对

使用道具 举报

发表于 2014-10-13 12:10:48 | 显示全部楼层
强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2014-10-13 15:51:38 | 显示全部楼层
走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2014-10-13 17:28:17 | 显示全部楼层
比雷公还雷人哦~
回复 支持 反对

使用道具 举报

发表于 2014-10-13 19:45:12 | 显示全部楼层
强烈支持,非常感谢哥们抢沙发~给哥们顶一个
回复 支持 反对

使用道具 举报

发表于 2014-10-13 20:37:24 | 显示全部楼层
1,非常支持每日一题活动,一定会天天坚持参加
回复 支持 反对

使用道具 举报

发表于 2014-10-13 21:07:18 | 显示全部楼层
强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2014-10-13 21:11:54 | 显示全部楼层
强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2014-10-13 22:02:13 | 显示全部楼层
印象中答案应该是1
回复 支持 反对

使用道具 举报

发表于 2014-10-14 08:55:11 | 显示全部楼层
1 2 作用相同,表示a是常量
3 表示a指向常量
4 表示a是指针,其本身为常量
5 表示a是指针,其本身为常量且其指向常量
回复 支持 反对

使用道具 举报

发表于 2014-10-14 08:57:42 | 显示全部楼层
真不懂 看答案么好了强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2014-10-14 09:30:23 | 显示全部楼层
新手看答案!
回复 支持 反对

使用道具 举报

发表于 2014-10-14 10:42:40 | 显示全部楼层
1和2 是一样的吧
3. a是一个指针常量
4. *a值不可更改
5. a是一个指针常量,并且利用*a不能修改相应地址的值。(C++中类的成员函数后面加const是指不能修改类的成员变量的值,C中在变量后面加const确实少见啊,貌似意义也不大)
回复 支持 反对

使用道具 举报

发表于 2014-10-14 15:34:40 | 显示全部楼层
1、2一样的作用,指a是不可修改的。

3中a是可变的,*a是不可修改的。

4中*a是可变的,a是不可修改的。

5。。。不知道
回复 支持 反对

使用道具 举报

发表于 2014-10-14 15:35:53 | 显示全部楼层
第5个中的最后的const那样放可以么?
回复 支持 反对

使用道具 举报

发表于 2014-10-14 15:52:54 | 显示全部楼层
强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2014-10-14 16:10:56 | 显示全部楼层
第5个 放a后面不太懂
抢沙发~给哥们顶一个
回复 支持 反对

使用道具 举报

发表于 2014-10-14 18:44:40 | 显示全部楼层
最后一个不会,,其他都遇到过
回复 支持 反对

使用道具 举报

发表于 2014-10-14 22:09:45 | 显示全部楼层
1.a的值是不可变的
2、a的值是不可变的
3.*a的值不可变
4.a不可变,*a可变
5.两个都不可变
回复 支持 反对

使用道具 举报

发表于 2014-10-14 22:24:42 | 显示全部楼层
没用过 真不知道 学习下
回复 支持 反对

使用道具 举报

发表于 2014-10-14 22:29:59 | 显示全部楼层
初始化整形变量a
回复 支持 反对

使用道具 举报

发表于 2014-10-14 22:36:32 | 显示全部楼层
int const * a const;总感觉应该是 const int *const p;
回复 支持 反对

使用道具 举报

发表于 2014-10-14 23:02:32 | 显示全部楼层
int const * const a   火哥这么写可以吗?
回复 支持 反对

使用道具 举报

发表于 2014-10-15 14:31:58 | 显示全部楼层
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢
回复 支持 反对

使用道具 举报

发表于 2014-10-15 14:57:16 | 显示全部楼层
1.
2.个人认为前两个一样的
3.指针常量,指针所指向的值不能被改变
4.常量指针,指针本身不能被改变,但可以改变它所指向的值
5.(不知道)
回复 支持 反对

使用道具 举报

发表于 2014-10-15 18:43:12 | 显示全部楼层
我知道const定义的变量是只读变量,但不知道定义只读变量跟用宏定义#define有什么区别。
回复 支持 反对

使用道具 举报

发表于 2014-10-15 18:45:18 | 显示全部楼层
construction           

回复 支持 反对

使用道具 举报

发表于 2014-10-16 10:15:06 | 显示全部楼层
走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2014-10-16 21:37:41 | 显示全部楼层
不懂,来学习的啊
回复 支持 反对

使用道具 举报

发表于 2014-10-17 09:33:39 | 显示全部楼层
强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2014-10-17 17:09:35 | 显示全部楼层
我只知道前两个一样都是固定的变量,第三个是固定的指针
回复 支持 反对

使用道具 举报

发表于 2014-10-17 17:19:44 | 显示全部楼层
木有题目啊?
回复 支持 反对

使用道具 举报

发表于 2014-10-17 18:45:44 | 显示全部楼层
和code有什么区别呢?
回复 支持 反对

使用道具 举报

发表于 2014-10-17 21:03:37 | 显示全部楼层
1.a不可变
2、a不可变
3.*a不可变
4.a不可变,*a可变
5.都不可变
回复 支持 反对

使用道具 举报

发表于 2014-10-18 09:30:14 | 显示全部楼层
新手不懂,前来围观
回复 支持 反对

使用道具 举报

发表于 2014-10-18 13:49:31 | 显示全部楼层
整数常量  整数常量 整数指针其内容不能变  整数指针其本身不能变   ?
回复 支持 反对

使用道具 举报

发表于 2014-10-18 16:43:33 | 显示全部楼层
来看看,-。-
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-20 13:01 , Processed in 0.067551 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表