局部变量

C博客作业03——函数

旧街凉风 提交于 2020-01-11 00:58:32
0.展示PTA总分 截图展示: 1.本章学习总结 1.1学习内容总结 (a)函数的定义 1)函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数两种,scanf(),printf()等为库函数,编程时直接调用即可,而用户自己定义,属于自定义函数。 函数定义的一般形式: 函数类型 函数名(形式参数表) /*函数首部*/ { 函数实现过程 /*函数体*/ } 函数类型目前学的有 void,int,double等,void不返回值,所以可以不需要return,虽然它没有返回值,但是它的作用通常以屏幕输出等方式体现,在函数调用的时候,通常以独立的语句方式,如List()。而后面的函数类型则需要返回相应类型的数值。 (b)函数的调用 调用自定义函数时,程序中必须有与调用函数相对应的函数定义,称为函数声明。 函数的调用过程: 任何C程序执行,首先从主函数main()开始,如果遇到某个函数调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后将返回主函数,然后再从原先暂停的为止继续执行。 (c)函数的形参和实参。 函数定义时,位于参数表的被称为形参,在main()函数里主调函数的参数成为实参,形参除了接受实参的值外,使用方法与普通变量类似。形参和实参必须一一对应,两者数量相同,类型尽量一直,实参的作用只是把值传给形参,形参在自定义函数里起作用,作用范围仅限于自定义函数范围内

java虚拟机内存模型

一曲冷凌霜 提交于 2020-01-10 18:30:36
目录 一、虚拟机 二、虚拟机组成 1.栈 栈帧 2.程序计数器 3.方法区 对象组成 4.本地方法栈 5.堆 GC GC案例 一、虚拟机 ​ 同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的。 同一个java代码在windows上生成的机器码可能是0101…,在linux上生成的可能是1100…,那么这是怎么实现的呢? 不知道同学们还记不记得,在下载jdk的时候,我们在oracle官网,基于不同的操作系统或者位数版本要下载不同的jdk版本,也就是说针对不同的操作系统,jdk虚拟机有不同的实现。 那么虚拟机又是什么东西呢,如图是从软件层面屏蔽不同操作系统在底层硬件与指令上的区别,也就是跨平台的由来。 说到这里同学们可能还是有点不太明白,说的还是太宏观了,那我们来了解下java虚拟机的组成。 二、虚拟机组成 ​ 1.栈 我们先讲一下其中的一块内存区域栈,大家都知道栈是存储局部变量的,也是线程独有的区域,也就是每一个线程都会有自己独立的栈区域。 public class Math { public static int initData = 666; public static User user = new User(); public int compute() { int a = 1; int b = 2; int c = (a+b

10. Python函数的进阶

时光怂恿深爱的人放手 提交于 2020-01-10 00:47:52
⼀. 函数参数--动态传参 之前我们说过了传参, 如果我们需要给⼀个函数传参, ⽽参数⼜是不确定的. 或者我给⼀个 函数传很多参数, 我的形参就要写很多, 很⿇烦, 怎么办呢. 我们可以考虑使⽤动态参数. 形参的第三种: 动态参数 动态参数分成两种: 1. 动态接收位置参数 ⾸先我们先回顾⼀下位置参数, 位置参数, 按照位置进⾏传参 现在问题来了. 我想吃任意的食物. 数量是任意的, 食物也是任意的. 这时我们就要⽤到 动态参数了. 在参数位置编写*表⽰接收任意内容 动态接收参数的时候要注意: 动态参数必须在位置参数后⾯ 这时程序运⾏会报错. 因为前⾯传递进去的所有位置参数都被*food接收了. a和b永远接收 不到参数 所以必须改写成以下代码: 这个时候a和b就有值了, 但是这样写呢位置参数就不能⽤了. 所以. 我们要先写位置参数, 然后再⽤动态参数 那默认值参数呢? 我们发现默认值参数写在动态参数前⾯. 默认值只有⼀种情况可能会⽣效. 这个时候我们发现所有的默认值都⽣效了. 这个时候如果不给出关键字传参. 那么你的默 认值是永远都⽣效的. 顺序: 位置参数, 动态参数*, 默认值参数 2. 动态接收关键字参数 在python中可以动态的位置参数, 但是*这种情况只能接收位置参数⽆法接收关键字参数. 在python中使⽤**来接收动态关键字参数 这个时候接收的是⼀个dict

python命名空间和作用域及local,global,locals(),globals()区别

送分小仙女□ 提交于 2020-01-09 13:28:24
1.命名空间及作用域的基本概念 python命名空间和作用域及local,global,locals(),globals()区别 目录: 1.1.模块级变量运用 2.变量的作用域 3.local,global,locals(),globals()区别 locals查看局部变量 globals查看修改删除全局变量 4.典型错误处理 1.1.命名空间分类: 全局命名空间:记录模块变量,包括函数、类、导入模块、模块级变量和常量 局部命名空间:函数,类,推导式名字空间叫做局部名字空间,记录参数和局部变量 内置命名空间:任何模块均可访问它,存放着内置函数异常 1.2.三种命名空间之间的加载与取值顺序: 加载顺序: 内置命名空间(程序运行前加载)->全局命名空间(程序运行中:从上到下加载)->局部命名空间(程序运行中:调用时才加载) 取值 ,查找变量顺序: 局部命名空间->全局命名空间->内置命名空间 局部名字空间local 本地- 特指当前函数或类方法。 局部名字空间 Eclosing封闭- 函数体内定义函数 全局名字空间global全局 - 特指当前模块。 内置名字空间 built-in内置- 对每个模块都是全局的。 注意: import module:模块自身被导,保持自已名字空间;module.function在模块的命名空间中运用 from module import:

Java8 lambda表达式使用局部变量final问题

一笑奈何 提交于 2020-01-07 14:47:17
lambda表达式在使用局部变量的问题 在使用lambda表达式的时候,经常会遇到一个问题,那就是在lambda表达式内部修改局部变量的的值时候,编译器会报错,说变量类型必须为final才可以使用,也就是说不让我们修改,这是为什么呢? Lambda可以没有限制地捕获(也就是在其主体中引用)实例变量和静态变量。但局部变量必须显式声明为final, 或事实上是final。换句话说,Lambda表达式只能捕获指派给它们的局部变量一次。 例如,下面的代码无法编译,因为portNumber 变量被赋值两次: int portNumber = 1337; Runnable r = () -> System.out.println(portNumber); portNumber = 31337; 编译第二行报错:Variable used in lambda expression should be final or effectively final. Lambda表达式规则 只能引用标记了 final 的外层局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误。 局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义) 不允许声明一个与局部变量同名的参数或者局部变量。 根据lanbda表达式规则可知

Makefile-06 局部变量、模式变量

帅比萌擦擦* 提交于 2020-01-07 09:28:39
局部变量   定义在依赖中,作用域只在指定的目标及其连带规则中。 var := xxx test : var := testxxx test : @echo "test:" @echo "var => $(var)" normal : @echo "var => $(var)" 模式变量   以通配符匹配并限定变量的作用域,变量的作用域在其能匹配的所有目标及其连带规则中。 var := xxx %e : var := exxx rule : @echo "var => $(var)" normal : @echo "var => $(var)" 来源: https://www.cnblogs.com/iszhangl/p/12153944.html

方法

℡╲_俬逩灬. 提交于 2020-01-07 05:26:01
方法的内存分析 https://www.bilibili.com/video/av33686176?p=87 return 当返回值是void的时候return后面必须直接写分号 运行到return方法终止 参数 实参 形参 形参也属于局部变量 调用方法内存分析 方法重载 在同一个类中方法名相同, 参数列表 不同。(与返回类型无关)[] 来源: https://www.cnblogs.com/huochemeiyouhuo/p/12149633.html

pageContext和局部变量的区别?

梦想的初衷 提交于 2020-01-06 20:31:09
4) pageContext: 保存的键值仅在本个页面有效。在未来学习Taglib过程当中,将发挥巨大作用。类变量被所有用户(浏览器)只在这一页时共享(例如例1.1),而pageContext 被某个用户(浏览器)只在这一页时才有。pageContext范围比类变量小,和局部变量是一样的,但局部变量可以在非service的方法中用,而 pageContext只能在service方法中用。 见例子2.4 5)局部变量:转化成servlet后的某个方法中的局部变量。 6)类变量:转化成servlet后的类变量。 例 2.3 <%@ page contentType="text/html; charset=GBK" %> <html> <body> <% request.setAttribute("rName","rmark-to-win"); application.setAttribute("aName","amark-to-win"); session.setAttribute("sName","smark-to-win"); request.getRequestDispatcher("/Cookie/AddCookie").forward(request,response); /*如用下面的response,request就取不出来了。 结果就变成如下了 null amark

C——存储类

五迷三道 提交于 2020-01-06 14:52:28
在C语言中, 存储类定义代码中变量或函数的范围及生命周期 。有四种存储类: auto、register、static和extern 。 auto存储类:只能用在函数内,即只能修饰局部变量。 { auto double price ; } 在上面的语句中,也可以不加auto,即局部变量默认的存储类是auto。 2. register存储类:用于定义存储在寄存器中而不是RAM中的局部变量,没有内存位置(故不能使用‘&’取地址符)。 3. static存储类:"告诉"编译器在程序的生命周期内要保持局部变量的存在,故使用此存储类修饰的局部变量可以在函数调用之间保持局部变量的值。也可修饰全局变量,使全局变量的作用域限制在声明它的文件内。 4. extern存储类:用来提供全局变量的引用,常用于当有两个或两个以上的文件共享相同的全局变量或函数的时候。 来源: CSDN 作者: FYang08 链接: https://blog.csdn.net/yangmm0718/article/details/103847085

并发编程之多线程线程安全(上)

拜拜、爱过 提交于 2020-01-04 06:14:09
1、为什么有线程安全问题? 当多个线程共享同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。 案例:现在有100张火车票,有两个窗口同时抢火车票,请使用多线程模拟抢票效果。 代码: public class NewThread1 implements Runnable{ private int trainCount = 100; @Override public void run() { while (trainCount>0){ try { Thread.sleep(100); }catch (Exception e){ } save(); } } private void save() { if (trainCount > 0) { System.out.println(Thread.currentThread().getName() + ",出售第" + (100 - trainCount + 1) + "张票"); trainCount--; } } public static void main(String[] args){ NewThread1 newThread1 = new NewThread1(); Thread thread1 = new Thread(newThread1,"①");