从一道面试题解析static的作用
来源:互联网 发布:java mq消息队列 编辑:程序博客网 时间:2024/06/01 11:14
浙江大华2011.10.10校园招聘会笔试题
#include <vector>int func(std::vector<int>vec){static int k = 2;std::vector<int>::reverse_iterator it;for(it = vec.rbegin(); it!=vec.rend(); ++it){k += *it%2==0? ++*it: (*it)++;}return k;}int main(void){std::vector<int>vec;for(int i = 0; i<4; i++){vec.push_back(i);printf("%d ",func(vec));}return 0;}
在做这道题的时候可能很多人会忽视关键词static,从而得出答案3、4、7、10,但正确的答案为3、5、10、18(在继续往下看之前先想想static的作用,可能你会得出答案)。
在一个源文件里面的变量如果用关键字static声明,则这个变量的作用域为这一个源文件里面,而不仅仅是在声明它的函数里面(如果其是在某函数里面声明的),每一次使用改变量时我们必须考虑到它之前的值是什么。因此在这个程序中,第一次使用func后k的值为3,由于k用static声明,因此尽管离开了函数func的作用域,但它的值还是3,以此类推。另外使用关键字static声明并定义的变量如果再次进行声明定义,则并不生效,该变量还是原来的值。
- 从一道面试题解析static的作用
- 一道面试题的解析
- JavaScript关于变量作用域的一道面试题
- 从一道面试题彻底搞懂hashCode与equals的作用与区别及应当注意的细节
- 从一道面试题彻底搞懂hashCode与equals的作用与区别及应当注意的细节
- 从微软的一道面试题谈问题解决之道
- 从微软一道面试题议中国的说“不”
- 从一道面试题想到的:论坛数据库设计
- Coder的困惑,从一道面试题说起(downmoon)
- 从一道面试题看指针与数组的区别
- 从一道面试题谈Linux下fork的运行机制
- 从一道面试题看指针与数组的区别
- 从一道面试题看指针与数组的区别
- 从一道面试题想到的论坛数据库设计
- 从一道面试题谈linux下fork的运行机制
- 从一道面试题谈linux下fork的运行机制
- 从一道面试题谈linux下fork的运行机制
- 从一道面试题谈linux下fork的运行机制
- 关于利用myeclipse开发基于xfire的webservice
- 关于this和super关键字的一点整理
- ubuntu下使用Xdebug
- 蛋疼的NDK r7的NUL文件名bug
- 黑马程序员__Java中的泛型
- 从一道面试题解析static的作用
- 黑马程序员__Java中的注解
- 【EL】EL表达式
- HTML笔记 (五)
- 欢迎正在学习《嵌入式技术》课程的同学报名参加
- Linux图形界面中客户端、服务器、窗口管理器之间的关系
- 开博了哦
- 阻碍Web开放的不是WebKit,而是Web开发者的短视
- 一周文章精选:Android官方文档之Web Apps开发