java 和 c等作用域问题,循环中重复定义变量
2011-03-02 15:35
661 查看
刚才有人问了一个java 中类似下面代码为何不会出现重复定义问题
变量在程序中是有作用域的,在同一个作用域的变量名必须是唯一的,不能重复。这不仅仅是java这样规定的,几乎所有的程序语言都是这样的。而java中作用域在一对{}中。常见的变量作用域的例子有:
1. 类中定义的成员变量整个类中都是可用的。
2. 而方法中定义的变量则一般仅限于包含该变量定义的{}中,即拥有块作用域。
3. for(int i = 0; i< n; i++){…},则i的作用域在整个循环内,函数参数作用域在整个函数。
4. java中内层的变量不能覆盖外层同名变量,而c 中则可以,例如下面代码
在c 和java 中都可以编译通过,但是若改为下面代码,
在c 中可以编译通过,外层a被内层覆盖,但java中不允许这种覆盖,因此,编译会有错误。
因此,我们可以回答开头的问题:
循环中定义的变量a 的作用域只在循环内部有效,当一轮循环结束时,a 已经被销毁,进入下一轮循环时,定义的a 与上一轮循环中的变量a已无关系,因此不会有重复定义的问题。
1: for (i = 0; i < 4; i++)
2: {
3: int a = i*4;
4: //other codes
5: }
变量在程序中是有作用域的,在同一个作用域的变量名必须是唯一的,不能重复。这不仅仅是java这样规定的,几乎所有的程序语言都是这样的。而java中作用域在一对{}中。常见的变量作用域的例子有:
1. 类中定义的成员变量整个类中都是可用的。
2. 而方法中定义的变量则一般仅限于包含该变量定义的{}中,即拥有块作用域。
3. for(int i = 0; i< n; i++){…},则i的作用域在整个循环内,函数参数作用域在整个函数。
4. java中内层的变量不能覆盖外层同名变量,而c 中则可以,例如下面代码
1: {
2: int a;
3: }
4: int a;
在c 和java 中都可以编译通过,但是若改为下面代码,
1: int a;
2: {
3: int a;
4: }
在c 中可以编译通过,外层a被内层覆盖,但java中不允许这种覆盖,因此,编译会有错误。
因此,我们可以回答开头的问题:
循环中定义的变量a 的作用域只在循环内部有效,当一轮循环结束时,a 已经被销毁,进入下一轮循环时,定义的a 与上一轮循环中的变量a已无关系,因此不会有重复定义的问题。
相关文章推荐
- C++多个头文件重复定义变量问题
- java 循环问题 大全 求2~100a之内的素数。求水仙花数:(1~1000)。有1、2、3、4四个数字,输出所有能组成的互不相同且无重复的三位数。打印空心菱形
- 问题:oracle DECLARE 变量重复利用;结果:Oracle 定义变量总结
- 在Java中使用循环定义会出现哪些问题
- 4. javacript高级程序设计-变量、作用域和内存问题
- 关于Java语言for循环内外变量定义的问题
- java书写规范问题,for、while、do while{}后面不能直接定义变量或生成对象(在没有大括号的情况下)
- java书写规范问题,for、while、do while{}后面不能直接定义变量或生成对象(在没有大括号的情况下)
- 管道下while循环中定义的变量在退出while循环时引用为空的问题
- 保护宏不可以解决变量重复定义的问题
- java书写规范问题,for、while、do while{}后面不能直接定义变量或生成对象(在没有大括号的情况下)
- 关于头文件变量重复定义问题怎么解决(thinkvd开发日志)
- shell循环中变量的作用域问题
- C 语言的循环控制变量定义和初始化问题
- C语言中全局变量的定义及重复包含问题
- 解决C/C++语言中全局变量重复定义的问题
- JS中用for循环解决重复定义的问题
- 解决重复包含一个头文件时变量重复定义的问题
- C++头文件中为何添加了#ifndef #define #endif还会出现变量重复定义的问题
- C++ 头文件中为何添加了#ifndef #define #endif还会出现变量重复定义的问题