2019年9月15日,开始了程序员求职路上的第一步--刷题+恶补基础。各种原因导致我一直想要开始却一直延后。现在开始不知道是不是晚了,但不试试一定是没希望的。作为一个学生,别的不敢说,学习能力绝对没问题,拿出高考+考研的精神,还有什么东西是我学不会的???
网上大家都推荐程序员面试宝典这本书,今天正好到货(我的是第5版),准备一边刷题一边通读C++Primer这本书一边将自己所学记录下来。
俗话说好记性不如烂笔头,纸张会腐朽,计算机恒永久。
so,let's go !!
5.1 面试题1
为什么会有这种错误呢?程序的本意是想将main函数外部定义的变量i赋值给main函数里面定义的变量i。
但编译器编译时是先从main函数开始的(记住这一点),int i= i;这句话是定义变量并初始化的语句,其执行顺序是:
1.int i,首先定义一个整形变量,并为其分配存储空间。
2.执行变量初始化语句,这是个赋值语句,从左到右执行,将i 赋值给i。其本意是想将外面定义的全局变量(main函数外部定义的变量作用于整个函数周期称为全局变量,main函数内部定义的变量只能作用在main函数内部,出了main函数生命周期就结束了,我们称之为局部变量。)赋值给这个内部变量。但因为main函数内部定义了一个同名变量,所以程序在编译时不会向main函数外部去查找全局变量i,这就导致了我们在试图将一个刚定义却还没有初始化的变量,去用来作为一个值赋值给一个变量。所提才有errorC4700:使用了未初始化的局部变量‘i’。
当然下面这样做就是对的了。
另外,这里还涉及到一个知识点,虽然这里并未考察。
void main( ) 和int main()有什么区别呢?
void 中文翻译为“无类型”。常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明。
如果函数没有返回值,那么应声明为void类型,int声明的函数,返回值必须为int 型。所以题目的 void main()函数体内部没有"return ;"这种语句。
总结本题所学:
1.全局变量、局部变量的作用域和作用周期区别?
2. 定义并初始化一个变量,程序在编译时是怎样的执行的?
3.void 和 int 在声明函数上的不同?
本来打算记录所学时并没有想这么多,但将理解转化为语言使人能明白的过程中,逐渐发现了这并不容易,它需要很多知识点的支持,希望我以后也能这样学习。不就题论题,发散思维,多思考为什么这样,其他方式行么。
希望我能坚持下去,也希望和我一样的程序员小白们能从中受益。发现不对之处,请联系我,大家一起讨论,好怕我会误导大家。。。
以上,谢谢。