函数调用

函数参数的使用

亡梦爱人 提交于 2020-03-18 16:56:14
一 形参与实参介绍 形参:在定义函数阶段定义的参数称之为形式参数,简称形参,相当于变量名 实参:在调用函数阶段传入的值称之为实际参数,简称实参,相当于变量值 形参与实参的关系: 1、在调用阶段,实参(变量值)会绑定给形参(变量名) 2、这种绑定关系只能在函数体内使用 3、实参与形参的绑定关系在函数调用时生效,函数调用结束后解除绑定关系 实参是传入的值,但值可以是以下形式 形式一:函数调用的括号内直接写值 func(1,2) 形式二:函数调用的括号内写定义好的变量名 a=1 b=2 func(a,b) 形式三: func(int('1'),2) 函数调用的括号内写其他函数(前提是这个其他函数调用后得到的是一个值) func(func1(1,2,),func2(2,3),333)二 形参与实参的具体使用 2.1 位置参数(按位置来,一个萝卜一个坑) 位置参数:按照从左到右的顺序依次定义的参数称之为位置参数 位置形参:在函数定义阶段,按照从左到右的顺序直接定义的"变量名" 特点:必须被传值,多一个不行少一个也不行 位置实参:在函数调用阶段, 按照从左到有的顺序依次传入的值 特点:按照顺序与形参一一对应 2.2 关键字参数 关键字实参:在函数调用阶段,按照key=value的形式传入的值 特点:指名道姓给某个形参传值,可以完全不参照顺序 混合使用,强调 1、位置实参必须放在关键字实参前 2

grub参数console=

邮差的信 提交于 2020-03-18 07:13:52
本文主要分析Linux内核如何处理grub参数中的console=ttyS0,115200n8部分,中间还会穿插一些 include/linux/init.h 的内容。 grub参数中的console=有多种形式,根据 Documentation/kernel-parameters.txt 文件, console= [KNL] Output console device and options. tty Use the virtual console device . ttyS [,options] ttyUSB0[,options] Use the specified serial port. The options are of the form "bbbbpnf", where "bbbb" is the baud rate, "p" is parity ("n", "o", or "e"), "n" is number of bits, and "f" is flow control ("r" for RTS or omit it). Default is "9600n8". uart[8250],io, [,options] uart[8250],mmio, [,options] Start an early, polled-mode console on the

JavaScript调用App原生代码(iOS、Android)通用解决方案

倖福魔咒の 提交于 2020-03-18 06:57:52
实际场景 场景:现在有一个H5活动页面,上面有一个登陆按钮,要求点击登陆按钮以后,唤出App内部的登录界面,当登录成功以后将用户的手机号返回给H5页面,显示出来。 这个场景应该算是比较完整的一次H5中的JavaScript与App原生代码进行交互了,这个过程,我们制定的方案满足以下几点: 满足基本的交互流程的功能 Android与iOS都能适用 H5的前端开发者,在书写JavaScript的业务代码的时候不需要为了迁就移动端语言的特性而写特殊的磨合代码 方便调试 交互流程 当H5页面上的JavaScript代码要调用原生的页面或者组件的时候,调用最好是双向的,一来一回,这样比较容易满足一些比较复杂的业务场景,就像上面的场景一样,有调用,有回调告知H5调用的结果。前端开发写的JavaScript代码基本上都是异步风格的,就拿上面的场景,如果登录是H5前端的,那么这个流程就会是: function loginClick() { loginComponent.login(function (error,result) { //处理登录完成以后的逻辑 }); } var loginComponent = { callBack:null, "login":function (callBack) { this.show(); this.callBack = callBack; }, show

C++之类和对象的特性

假装没事ソ 提交于 2020-03-18 04:45:55
   简介:C++并不是一个纯粹的面向对象的语言,而是一种基于过程和面向对象的混合型的语言。 凡是以类对象为基本构成单位的程序称为基于对象的程序,再加上抽象、封装、继承和多态就成为面向对象程序。 1.掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性; 2.掌握类对象的定义; 3.理解类的成员的访问控制的含义,公有、私有和保护成员的区别。 4.能够根据给定的要求定义类并实现类的成员函数;   何为对象? 对象两要素:属性和行为; 属性对应于对象的数据;行为对应于函数; 对象之间可以通过一定的渠道相互联系;要使某一个对象实现某一种行为(操作),应当向它传送相应的 消息 。   封装与信息隐蔽 可以对一个对象进行封装处理,把它的一部分属性和功能对外屏蔽,外界看不到,甚至不可知;这就是封装。 所谓封装有两方面的含义:一是将有关数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相互独立,互不干扰;二是将对象中的某些部分对外隐蔽,即阴部内部细节,保留少量接口,以便与外界联系,接受外界信息。信息隐蔽有利于数据安全,防止无关的人了解和修改。   抽象:表示同一类事物的本质;类是对象的抽象,对象是类的特例,即类的具体表现形式;   继承和软件重用   多态 如果有几个相似而不完全相同的对象,有时要求在向它们发出同一个消息时,它们的反应各不相同,分别执行不同的操作

【2020Python修炼记15】Python语法入门—函数的基本使用

泄露秘密 提交于 2020-03-17 15:35:16
【目录】 一、什么是函数 二、为何要有函数 三、如何使用函数 (一)定义函数 (二)调用函数 (三)函数返回值 一、什么是函数 为了方便重复使用某些需要的代码功能,因此创造了很多代码工具,给它们命名为‘函数’。 在程序中, 具备某一功能的‘工具’—— 函数 ‘事先准备工具’的过程—— 函数的定义 ‘拿来就用’—— 函数的调用 二、为何要有函数 为了解决以下程序代码问题: 1、组织结构不清晰,可读性差 2、代码冗余 3、可维护性、扩展性差 三、如何使用函数 函数的使用分为 定义阶段 与 调用阶段, 定义函数时只检测语法,不执行函数体代码, 函数名加括号即函数调用,只有调用函数时才会执行函数体代码 定义函数发生的事情 1、 申请内存 空间保存函数体代码 2、将上述 内存地址绑定函数名 3、定义函数不会执行函数体代码,但是会 检测函数体语法 调用函数发生的事情 1、通过函数名 找到函数的内存地址 ——print(func) 2、然后加口号就是在 触发函数体代码的执行 ——func() (一)定义函数——三种方式 函数的使用 必须遵循’ 先定义,后调用’ 的原则。 函数的定义 就相当于 事先将函数体代码保存 起来,然后将 内存地址赋值给函数名 ,函数名就是对这段代码的引用,这和变量的定义是相似的。没有事先定义函数而直接调用,就相当于在引用一个不存在的’变量名’。 def 函数名(参数1

X64的函数调用规则

允我心安 提交于 2020-03-17 11:25:14
某厂面试归来,发现自己落伍了!>>> 闲着没事想研究一下gcc的函数调用方式和m$的__stdcall、__fastcall之类有何区别,本想是了解一下关于参数的入栈顺序和清理方,就随便写了个C函数,编译成.s文件,一看发现根本就没有push和pop之类的指令...两个int参数都是利用rsi和rdi传递!网上百度了一个关于m$平台x64的调用约定 看完ddk里相关的部分,总结下吧,规则倒是不复杂,相对x86时代的stdcall cdecl fastcall 三分天下要简明的多。按ddk里的说法,m$就是要趁这次统一调用规则…… -__- 在x64下函数调用的前4个参数总是放在寄存器中传递,剩余的参数则压入堆栈中。而x86上则是全部压入堆栈中(除了fastcall方式)。这4个用于存放参数的寄存器分别是:存放整数参数的RCX,RDX,R8,R9;存放浮点数参数的XMM0,XMM1,XMM2,XMM3。 按照所传参数是整数还是浮点数的不同,寄存器的使用规则如下: 全部整数参数: func1(int a, int b, int c, int d, int e); 参数a放入RCX,参数b放入RDC,参数c放入R8,参数d放入R9,参数e么压栈。 参数传递规则:按照参数表声明的顺序,从左向右,前4个参数依次放入RCX,RDX,R8,R9中。 全部浮点数参数: func1(float a,

Python学习--面向对象编程

元气小坏坏 提交于 2020-03-17 07:05:49
一、编程范式 编程范式:按照什么方式来去编程,去实现一个功能。举个例子:做饭可以用电磁炉,也可以用燃气灶。不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路,两种最重要的编程范式分别是面向过程编程和面向对象编程。 二、两大编程范式 1、面向过程编程 面向过程的思想是把一个项目、一件事情按照一定的顺序,从头到尾一步一步地做下去,先做什么,后做什么,一直到结束。这种思想比较好理解,其实这也是一个人做事的方法,我们之前编程的思想也都是使用这种思想。这种编程思想只要前面有一个步骤变了,那么后面的就也要变,维护成本高。 面向过程多用于编写一次性脚本或代码量极少的简单小程序。 2、面向对象编程 面向对象--Object Oriented Programming,简称oop。面向对象的思想是把一个项目、一件事情分成更小的项目,或者说分成一个个更小的部分,每一部分负责什么方面的功能,最后再由这些部分组合而成为一个整体。这种思想比较适合多人的分工合作,就像一个大的机关:分各个部门,每个部门分别负责某样职能,各个部门可以不用理解其他部门的事,只要完成自己那一部分的事情就OK了。 三、面向对象的优点 对于编程初学者来讲,OOP不是一个很容易理解的编程方式,虽然大家都很清楚概念以及语法,但是一到真正写程序的时候,还是喜欢用函数式编程来写代码。特别是初学者,很容易陷入一个窘境就是

单文档/视图

邮差的信 提交于 2020-03-17 06:31:40
引文《MFC深入浅出》李进久 如前一节所述,程序从 InitInstance 开始。在 SDI 应用程序的 APP::InitInstance() 里,至少有以下语句: 第一部分,创建文档模板对象并把它添加到应用程序的模板链表 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate(   IDR_MAINFRAME,   RUNTIME_CLASS(CTDoc),   RUNTIME_CLASS(CMainFrame), // main SDI frame window   RUNTIME_CLASS(CTView)); AddDocTemplate(pDocTemplate); CSingleDocTemplate调用构造函数,源码如下: void CWinApp::AddDocTemplate(CDocTemplate* pTemplate) { if (m_pDocManager == NULL) m_pDocManager = new CDocManager; m_pDocManager->AddDocTemplate(pTemplate); } 作用两个: 生成一个 CDocManager 对象,其中 m_pDocManager 是 CWinApp::m_pDocManager

js (this,call,apply)(

别来无恙 提交于 2020-03-17 04:31:57
转自 http://blog.sina.com.cn/s/blog_68cb8c790100ytl5.html 对于我这种初学者来说this指的到底是哪里,实在头疼,再有了前面关于变量和作用域的概念后,今天我觉定学习关于this的用法,把这个烦人的家伙解决掉! (一)关于this 首先关于this我想说一句话,这句话记住了this的用法你也就差不多都能明白了: this指的是当前函数的对象 。这句话可能比较绕,我会举出很多例子和这句话 呼应 的!(看下文) 1.首先看下面这段代码, 定义一个函数,弹下this, function doSomething(){ alert(this); } doSomething(); 我是在firefox里面调试的,所以返回的结果是[Object Window]。 那么这个 [Object Window], 到底是什么呢?看看下面的代码 function doSomething(){ alert(this===window); } doSomething(); 看到弹出了true, 也就是说在这种正常情况下,this其实就是window 所以,我们定义了一个全局的变量的时候,可以 var test="Tony"; 也可以 window["test"]="Tony"; 下面这个例子,进一步说明,正常情况下,函数里的this就是window var

源码浅析2--奇技淫巧

一个人想着一个人 提交于 2020-03-17 03:55:46
本篇是系列第二篇,标题起得有点大,希望内容对得起这个标题,这篇文章主要总结一下在 jQuery 中一些十分讨巧的 coding 方式,将会由浅及深,可能会有一些基础,但是我希望全面一点,对看文章的人都有所帮助,源码我还一直在阅读,也会不断的更新本文。 即便你不想去阅读源码,看看下面的总结,我想对提高编程能力,转换思维方式都大有裨益,废话少说,进入正题。 短路表达式 与 多重短路表达式 短路表达式这个应该人所皆知了。在 jQuery 中,大量的使用了短路表达式与多重短路表达式。 短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。这是这两个操作符的一个重要属性。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 // ||短路表达式 var foo = a || b; // 相当于 if (a){ foo = a; } else { foo = b; } // &&短路表达式 var bar = a && b; // 相当于 if (a){ bar = b; } else { bar = a; } 当然,上面两个例子是短路表达式最简单是情况,多数情况下,jQuery 是这样使用它们的: 1 2 3 4 5 6 7 8 9 // 选自 jQuery