程序员面试宝典学习笔记01

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 在声明函数上的不同?

 

本来打算记录所学时并没有想这么多,但将理解转化为语言使人能明白的过程中,逐渐发现了这并不容易,它需要很多知识点的支持,希望我以后也能这样学习。不就题论题,发散思维,多思考为什么这样,其他方式行么。

希望我能坚持下去,也希望和我一样的程序员小白们能从中受益。发现不对之处,请联系我,大家一起讨论,好怕我会误导大家。。。

以上,谢谢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章