局部变量

C程序设计进阶:全局变量VS局部变量

别等时光非礼了梦想. 提交于 2020-01-29 05:17:19
C程序设计进阶:局部变量VS全局变量 全局变量与局部变量 全局变量与局部变量是根据变量在程序中作用范围的不同来进行划分的。 什么是局部变量: 所谓局部变量就是在函数内部或者某个代码块的内部(所谓代码块的内部就是用大括号括起来的那些代码)定义的一些变量,就称为局部变量。 什么是全局变量: 与局部变量相比较,全局变量的作用范围更大,它的作用域从定义它的位置开始一直到这个文件的结束,换句话说,无论这个文件里面有多少个函数,从定义变量的那个地方开始,他就会一直在起作用。 重点来了 观察上面的程序,如果当全局变量与局部变量同名时,局部变量将在自己作用域内有效,它将屏蔽同名的全局变量。也就是说,在exchange函数内,如果对变量a,b进行了值得修改,它将不会影响到exchange函数外部,在main函数中最后打印的a,b仍然是全局变量a,b。 如果想对a,b的大小进行判断并变换位置,那么应将函数定义为: void exchange ( ) { int p ; if ( a < b ) { p = a ; a = b ; b = p ; } } 就是省略掉定义形式参数的部分。 写在最后 今日在coursera上无意间发现一个北大的C程序设计课程,抱着顺便复习期末考试的心态,点了进去,仔细听了一节课后发现还挺有意思儿,老师讲的很详细,也弥补了我之前在学习C的过程中剩余的一些不足。接下来

JVM指令手册

℡╲_俬逩灬. 提交于 2020-01-29 05:15:46
栈和局部变量操作 将常量压入栈的指令 aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 iconst_1 将int类型常量1压入栈 iconst_2 将int类型常量2压入栈 iconst_3 将int类型常量3压入栈 iconst_4 将int类型常量4压入栈 iconst_5 将int类型常量5压入栈 lconst_0 将long类型常量0压入栈 lconst_1 将long类型常量1压入栈 fconst_0 将float类型常量0压入栈 fconst_1 将float类型常量1压入栈 dconst_0 将double类型常量0压入栈 dconst_1 将double类型常量1压入栈 bipush 将一个8位带符号整数压入栈 sipush 将16位带符号整数压入栈 ldc 把常量池中的项压入栈 ldc_w 把常量池中的项压入栈(使用宽索引) ldc2_w 把常量池中long类型或者double类型的项压入栈(使用宽索引) 从栈中的局部变量中装载值的指令 iload 从局部变量中装载int类型值 lload 从局部变量中装载long类型值 fload 从局部变量中装载float类型值 dload 从局部变量中装载double类型值 aload 从局部变量中装载引用类型值(refernce)

封装 private \\ get\\set

徘徊边缘 提交于 2020-01-29 03:14:53
setXXX() 用户接受对象发过来的参数 。 getXXX()用户从private 的变量获取参数 。 例: 结果: --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- this.变量 用户 如果 局部变量和成员变量相同的情况下区分。this.XX 表示局部变量 XX表示这个方法内的XX 变量。 例: 来源: https://www.cnblogs.com/gxtoo/p/12239480.html

Java变量类型

ε祈祈猫儿з 提交于 2020-01-28 21:20:37
Java变量类型 Java语言支持的变量类型有: 类变量:独立于方法之外的变量,用static修饰。 实例变量:独立于方法之外的变量,不过没有static修饰。 局部变量:类的方法中的变量。 1 public class Variable{ 2 static int allClicks=0;//类变量 3 String str="hello world";//实例变量 4 public void method(){ 5 int I=0;//局部变量 6 } 7 } Java局部变量 局部变量声明在 方法、构造方法或者语句块中 ; 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁; 访问修饰符不能用于局部变量; 局部变量只在声明它的方法、构造方法或者语句块中可见; 局部变量是在 栈上分配 的; 局部变量没有默认值 ,所以局部变量在被声明后,必须经过初始化,才可以使用。 实例1 1 public class Test{ 2 public void pupAge(){ 3 int age=0;//局部变量必须初始化,否则在编译时会出错 4 age=age+7; 5 System.out.println("小狗的年龄是:"+age); 6 } 7 public static void main(String[] args){ 8 Test test

Python:函数和代码复用

落爺英雄遲暮 提交于 2020-01-28 12:55:15
1、关于递归函数的描述,以下选项中正确的是 A.包含一个循环结构 B.函数比较复杂 C.函数内部包含对本函数的再次调用 D.函数名称作为返回值 答案:D 答案解析:递归函数是指函数内部包含对本函数的再次调用。 2、关于递归函数基例的说明,以下选项中错误的是 A.递归函数必须有基例 B.递归函数的基例不再进行递归 C.每个递归函数都只能有一个基例 D.递归函数的基例决定递归的深度 答案:C 答案解析:每个递归函数至少存在一个基例 3、以下选项中,不属于函数的作用的是 A.提高代码执行速度 B.复用代码 C.增强代码可读性 D.降低编程复杂度 答案:C 答案解析:函数的作用是复用代码、增强代码可读性、降低编程复杂度,而并不能提高代码的执行速度。 4、假设函数中不包括global保留字,对于改变参数值的方法,以下选项中错误的是 A.参数是列表类型时,改变原参数的值 B.参数是整数类型时,不改变原参数的值 C.参数是组合类型(可变对象)时,改变原参数的值 D.参数的值是否改变与函数中对象的操作有关,与参数类型无关 答案:D 答案解析:python里有可变对象和不可变对象之分。只有传入的是不可变对象时,值才不发生改变,若是可变对象,值的传入需要注意。不可变对象:Number ,String ,Tuple,bool。可变对象: List , Set , Dictionary是可以改变内部的元素

java基本知识点3

若如初见. 提交于 2020-01-28 08:47:47
Java 变量类型 Java 局部变量 局部变量声明在方法、构造方法或者语句块中; 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁; 访问修饰符不能用于局部变量; 局部变量只在声明它的方法、构造方法或者语句块中可见; 局部变量是在栈上分配的。 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。 package com . runoob . test ; public class Test { public void pupAge ( ) { int age = 0 ; age = age + 7 ; System . out . println ( "小狗的年龄是: " + age ) ; } public static void main ( String [ ] args ) { Test test = new Test ( ) ; test . pupAge ( ) ; } } 运行结果: 小狗的年龄是: 7 实例变量 变量声明在一个类中,但在方法、构造方法和语句块之外; 当一个对象被实例化之后,每个实例变量的值就跟着确定; 实例变量在对象创建的时候创建,在对象被销毁的时候销毁; 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息; 实例变量可以声明在使用前或者使用后;

javap 学习日记~2

拥有回忆 提交于 2020-01-28 06:59:33
既然我们对javap有了一定的了解,那我们就开始用它来解决一些实际的问题: 1.i++和++i的问题 反编译结果为 Code: 0: iconst_1 1: istore_1 2: iinc 1, 1 //这个个指令,把局部变量1,也就是i,增加1,这个指令不会导致栈的变化,i此时变成2了 5: iconst_1 6: istore_2 7: iinc 2, 1 //这个个指令,把局部变量2,也就是j,增加1,这个指令不会导致栈的变化,j此时变成2了 10: return 可以看出,++在前在后,在这段代码中,没有任何不同。 我们再看另一段代码: 反编译结果: Code: 0: iconst_1 1: istore_1 2: iload_1 3: iinc 1, 1 //局部变量1(即i)加1变为2,注意这时栈中仍然是1,没有改变 6: istore_1 //把栈顶的值放到局部变量1中,即i这时候由2变成了1 7: iconst_1 8: istore_2 9: iinc 2, 1 //局部变量2(即j)加1变为2,注意这时栈中仍然是1,没有改变 12: iload_2 //把局部变量2(即j)的值放到栈顶,此时栈顶的值变为2 13: istore_2 //把栈顶的值放到局部变量2中,即j这时候真正由1变成了2 14: return 是否看明白了? 如果这个看明白了

匿名类型与隐式类型局部变量

萝らか妹 提交于 2020-01-27 14:19:12
在本篇中我要介绍两个概念,我觉得这两个东西必须一起来介绍,这样才能连贯。 C# 2.0里我们已经匿名方法了,现在类型也玩起匿名来了,怪不得大家“举报”的时候都喜欢匿名,为啥?因为匿名被举报人就找不着报复对象了呗,是的,匿名就是把名字隐藏起来,没有名字谁还能找得到你啊。 匿名类型 在C#里有这样一些类型,它是作为临时储存数据的,生命周期只在这个方法内,方法结束了,这个类型的生命周期也没有了。那么这里我们就可以使用一个匿名类型。 var KeyPair = new {Key = ”yuyi”,Value = ” 20 ”}; 这个KeyPair就是一个匿名类型,注意KeyPair这里是一个变量名,并不是类的名字。嗯,前面还有一个var,这又是什么呢?这是C# 3.0里面的隐式局部变量。 隐式类型局部变量 还是先介绍一下隐式类型局部变量吧: 在C# 3.0里多了一个关键字var,他表示这样的一种类型:C#编译器可以根据上下文推断的出来比如var I = 5;编译器可以根据后面的赋值推断的出来i应该是个整型。既然是局部变量,那么它就只能用在方法内部了,注意C#是强类型的,引入了一个var并不是像javascript那样,变成了一个弱类型的语言。在编译器第一次编译后var就会被确定的类型所替代的。所以对于隐式类型局部变量要注意以下几点: 1.它只能存在于方法内部 2.它不是一个新的类型

变量进阶

北慕城南 提交于 2020-01-27 03:54:07
01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的 1.1 引用的概念 在 Python 中 变量 和 数据 是分开存储的 数据 保存在内存中的一个位置 变量 中保存着数据在内存中的地址 变量 中 记录数据的地址 ,就叫做 引用 使用 id() 函数可以查看变量中保存数据所在的 内存地址 注意:如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用 变量 不再 对之前的数据引用 变量 改为 对新赋值的数据引用 1.2 变量引用 的示例 在 Python 中,变量的名字类似于 便签纸 贴在 数据 上 定义一个整数变量 a ,并且赋值为 1 代码 图示 a = 1 将变量 a 赋值为 2 代码 图示 a = 2 定义一个整数变量 b ,并且将变量 a 的值赋值给 b 代码 图示 b = a 变量 b 是第 2 个贴在数字 2 上的标签 1.3 函数的参数和返回值的传递 在 Python 中,函数的 实参 / 返回值 都是是靠 引用 来传递来的 def test(num): print("-" * 50) print("%d 在函数内的内存地址是 %x" % (num, id(num))) result = 100 print("返回值 %d 在内存中的地址是 %x" % (result

成员变量和局部变量同名问题

我与影子孤独终老i 提交于 2020-01-26 22:49:36
通过前面学习,基本明确了对象初始化过程中的细节,也知道了构造方法之间的调用是通过this关键字完成的。但this也有另外一个用途。 当在方法中出现了局部变量和成员变量同名的时候,那么在方法中怎么区别局部变量成员变量呢? 可以在成员变量名前面加上 this. 来区别成员变量和局部变量 class Person { private int age ; private String name ; // 给姓名和年龄初始化的构造方法 Person(String name, int age) { // 当需要访问成员变量是,只需要在成员变量前面加上 this. 即可 this . name = name; this . age = age; } public void speak() { System. out .println( "name=" + this . name + ",age=" + this . age ); } } class PersonDemo { public static void main(String[] args) { Person p = new Person( " 张三 " , 23); p.speak(); } } 来源: CSDN 作者: little-stars 链接: https://blog.csdn.net/weixin_41874888