黑马程序员技术交流社区

标题: 关于作用域的理解 [打印本页]

作者: 骑着飞机去看海    时间: 2014-6-29 21:54
标题: 关于作用域的理解
本帖最后由 骑着飞机去看海 于 2014-7-1 11:05 编辑

其实再看视频的时候感觉作用域的地方听蒙了,但是最近又从新看了一遍作用域理解多了些,很多时候看一遍会卡住,看第二遍可能就会想通,其实简单的理解就是再同级代码块内,如果定义了变量但是没有定义什么类型,那么就是跟没写一样,我不知道可不可这么理解?

作者: fantacyleo    时间: 2014-6-29 22:12
定义变量怎么可能不带类型
作者: 骑着飞机去看海    时间: 2014-6-29 22:43
fantacyleo 发表于 2014-6-29 22:12
定义变量怎么可能不带类型

那个老师讲的列子,就没有定义类型,指定义了变量。。。。。
作者: fantacyleo    时间: 2014-6-29 22:45
骑着飞机去看海 发表于 2014-6-29 22:43
那个老师讲的列子,就没有定义类型,指定义了变量。。。。。

我没印象了。。。怎么写的?哪个视频?
作者: lipeiaiwo    时间: 2014-6-29 22:47
还没看到那么远。。。:(
作者: 骑着飞机去看海    时间: 2014-6-29 22:48
fantacyleo 发表于 2014-6-29 22:45
我没印象了。。。怎么写的?哪个视频?

就是在讲作用域的那节课,你仔细看代码,就看出来了。。。。刚开始没有定义变量类型,后来才定义得

作者: fantacyleo    时间: 2014-6-29 23:08
骑着飞机去看海 发表于 2014-6-29 22:48
就是在讲作用域的那节课,你仔细看代码,就看出来了。。。。刚开始没有定义变量类型,后来才定义得
...

没看到。而且应该不可能,定义变量不带类型在c中是语法错误
作者: 骑着飞机去看海    时间: 2014-6-30 08:58
fantacyleo 发表于 2014-6-29 23:08
没看到。而且应该不可能,定义变量不带类型在c中是语法错误

就在那个score = 50 哪里,在代码快内 score = 50 则输出是50和200 但是定义了 int score  = 50 后输出就变成了100和200,其实就是说在代码块里定义后会清空,不定义则会保留。就相当于 { } 没有写
作者: 我是一只小小强    时间: 2014-6-30 09:11
同学,其实你通过内存理解比较容易,,而且不容易错,你说的是已经在开辟一个内存空间下的函数内,这情况就类似于全局变量所有函数都可以调用,因为他们都在同一个开辟的内存内,所有的变量必须赋予类型,不定义类型就无法开辟内存空间就无法运行了,你看到的没写是因为在同一内存内已经定义score一次了,赋值时就不需要再定义了
作者: fantacyleo    时间: 2014-6-30 09:53
骑着飞机去看海 发表于 2014-6-30 08:58
就在那个score = 50 哪里,在代码快内 score = 50 则输出是50和200 但是定义了 int score  = 50 后输出就 ...

额,明白你的意思了。但其实代码块里定义并没有清空外部同名变量,只是在另外的内存空间又存储了一个新值。虽然名字都叫score,却是两个不同的变量。编译器找变量时,先在本代码块范围内找,找到了就直接用。找不到才会到本代码块之外去找。如果按你理解是清空了,就无法解释代码块结束之后,原来外部的那个score还保留着之前的值
作者: 骑着飞机去看海    时间: 2014-6-30 12:37
我是一只小小强 发表于 2014-6-30 09:11
同学,其实你通过内存理解比较容易,,而且不容易错,你说的是已经在开辟一个内存空间下的函数内,这情况就 ...

恩 对 不定义类型就无法开辟空间。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2