A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 骑着飞机去看海 中级黑马   /  2014-6-29 21:54  /  1278 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 骑着飞机去看海 于 2014-7-1 11:05 编辑

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

10 个回复

倒序浏览
定义变量怎么可能不带类型
回复 使用道具 举报
fantacyleo 发表于 2014-6-29 22:12
定义变量怎么可能不带类型

那个老师讲的列子,就没有定义类型,指定义了变量。。。。。
回复 使用道具 举报
骑着飞机去看海 发表于 2014-6-29 22:43
那个老师讲的列子,就没有定义类型,指定义了变量。。。。。

我没印象了。。。怎么写的?哪个视频?
回复 使用道具 举报
还没看到那么远。。。:(
回复 使用道具 举报
fantacyleo 发表于 2014-6-29 22:45
我没印象了。。。怎么写的?哪个视频?

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

没看到。而且应该不可能,定义变量不带类型在c中是语法错误
回复 使用道具 举报
fantacyleo 发表于 2014-6-29 23:08
没看到。而且应该不可能,定义变量不带类型在c中是语法错误

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

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

恩 对 不定义类型就无法开辟空间。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马