精华内容
下载资源
问答
  • 关于函数调用约定

    2013-04-06 17:49:39
    函数调用约定描述了如何以正确的方式调用某些特定类型的函数。包括了函数参数在栈上的分配顺序、有哪些参数将通过寄存器传入,以及在函数返回时函数栈的回收方式等。 函数调用约定的几种类型   stdcall,...

    函数调用约定描述了如何以正确的方式调用某些特定类型的函数。包括了函数参数在栈上的分配顺序、有哪些参数将通过寄存器传入,以及在函数返回时函数栈的回收方式等。

    函数调用约定的几种类型 

     stdcall,cdecl,fastcall,thiscall,nakedcall,pascal

    stdcall调用约定为Win32 API所广泛使用。

        1、参数是从右往左传递的,也是放在堆栈中。 
      2、函数的堆栈平衡操作是由被调用函数执行的,故编译文件比cdecl小,不能实现变参函数 
      函数的返回值放在eax寄存器中,如果是返回64位的数,则要使用edx:eax寄存器对。

    cdecl调用约定(C语言使用)

        1、参数是从右向左传递的,也是放在堆栈中 
      2、堆栈平衡是由函数调用者来执行的

    支持像printf、scanf的变参调用。

    fastcall调用约定

    fastcall见名知其意,其特点就是快。fastcall函数调用约定表明了参数应该放在寄存器中,而不是在栈中,VC编译器采用调用约定传递参数时,最左边的两个不大于4个字节(DWORD)的参数分别放在ecx和edx寄存器。当寄存器用完的时候,其余参数仍然从右到左的顺序压入堆栈。像浮点值、远指针和int64类型总是通过堆栈来传递的。

    thiscall调用约定

    唯一一个不能明确指明的函数修饰,因为thiscall不是关键字。他是C++类成员函数缺省的调用约定。由于成员函数调用还是一个this指针,所以thiscall是专为C++设计的调用方式。

        1、参数从右往左入栈

        2、如果参数个数确定,this指针通过通过ecx传递给被调用者;如果参数个数不确定,this指针在所有参数压栈后被压入堆栈

        3、对参数个数不定的,调用者清理堆栈,否则函数自己清理

    nakedcall调用约定

        不常用,用于实模式驱动程序设计

    pascal调用约定(pascal语言使用)

         1、参量由左到右的顺序入栈

         2、由被调用函数自身负责将参量从堆栈中清除

    参考:http://baike.baidu.com/view/1276580.htm

    出处:http://blog.chinaunix.net/uid-26898698-id-3181880.html

    展开全文
  • 【单选题】下面是有关子类调用父类构造函数描述正确的是?A. 子类定义了自己的构造函数,就不会调用父类的构造函数。 B. 如果子类的构造没有通过super调用父类构造函数,那么子类会先调用子类自己的构造函数,再...

    【单选题】下面是有关子类调用父类构造函数的描述正确的是?

    A. 子类定义了自己的构造函数,就不会调用父类的构造函数 。 B. 如果子类的构造没有通过 super 调用父类构造函数, 那么子类会先调用子类自己的构造函数,再调用父类不含参数的构造函数。 C. 创建子类的对象时,子类构造方法总是先调用父类的构造函数

    更多相关问题

    教育科学研究要遵循的基本愿则有:客观性原则、系统性原则、理论与实践相结合原则、教育性原则。()

    布鲁纳是认知一结构学习论的代表人物,他在教学中主张采用发现法。()

    对幼儿实施全面发展教育是我国幼儿教育的基本出发点。()

    对幼儿实施全面发展教育是我国幼儿教育的基本出发点。()

    对幼儿实施全面发展教育是我国幼儿教育的基本出发点。()

    雷公藤中毒的主要症状有A、恶心呕吐B、腹痛腹泻C、食欲下降D、肠炎便血E、肝脏损伤

    幼儿各方面的健康发展首先需要身体的正常发育,这是幼儿健康发展的前提条件。()

    【T16】A. BETWEEN B. IMITATE C. ACCELERATE D. OTHERWISE PHRASES: A. ENABLING T

    【T15】A. BETWEEN B. IMITATE C. ACCELERATE D. OTHERWISE PHRASES: A. ENABLING T

    张某,男,65岁,头痛身痛、鼻塞流清涕、长期咳嗽,咳嗽吐稀白痰、口不渴或渴喜热饮、苔薄白。医生诊断为

    【T12】A. WATCHING TV B. HIRE THEM C. SO PHRASES: A. THAT THE COMPANIES THAT【T7】__

    美国心理学家马斯洛是需要层次理论的提出者和代表人物。()

    1868年,俄国教育家乌申斯基出版了《人是教育的对象》,对当时的心理学发展成果进行了总结,乌申斯

    【T12】A. WATCHING TV B. HIRE THEM C. SO PHRASES: A. THAT THE COMPANIES THAT【T7】__

    幼儿德育的目标主要是萌发其爱家乡、爱祖国、爱集体等的情感,培养诚实、自信、勇敢、讲礼貌等良好

    细胞在发生一次兴奋后,兴奋性变化的顺序是A.相对不应期一绝对不应期一超常期一低常期B.相对不应

    临床治疗时,应慎用寒凉药物的季节是A、春B、夏C、长夏D、秋E、冬

    ABC理论中A代表个体遇到的主要事实、行为、事件,B代表个体对A的信念、观点,C代表事件造成的情绪

    在幼小衔接工作中,要以幼儿的长远发展为目标,坚持长期性而非突击性的指导思想。()

    中国早在四千多年前的夏代就有了学校教育的形态。从西周以后,出现“国学”和“乡学”,这是比较完备

    下垂眉的特点是眉头低、眉峰高。

    在幼小衔接工作中,要以幼儿的长远发展为目标,坚持长期性而非突击性的指导思想。()

    【T18】A. BETWEEN B. IMITATE C. ACCELERATE D. OTHERWISE PHRASES: A. ENABLING T

    张某,男,65岁,头痛身痛、鼻塞流清涕、长期咳嗽,咳嗽吐稀白痰、口不渴或渴喜热饮、苔薄白。医生诊断为

    幼儿智育的内容包括发展幼儿的智力、引导幼儿获得粗浅的知识、培养幼儿求知的兴趣和欲望以及良

    熟时期西方心理学比较注重结合教育实际,注重为学校教育服务。20世纪60年代初,布鲁纳发起了课程

    课外活动是学生自愿选择、自愿参加的活动,其基本特点在于学生参加课外活动的自愿选择性。()

    大量的研究发现,幼儿期更为有效的学习方式应该是具体形象的、以游戏为主的自发性学习。()

    幼儿德育的目标强调从情感人手,符合幼儿品德形成和发展的规律,符合幼儿的年龄特征。()

    雷公藤中毒的主要症状有A、恶心呕吐B、腹痛腹泻C、食欲下降D、肠炎便血E、肝脏损伤

    【T12】A. WATCHING TV B. HIRE THEM C. SO PHRASES: A. THAT THE COMPANIES THAT【T7】__

    幼儿的心理健康教育包括学习表达和调节自己情绪的方法、锻炼独立生活和学习的能力。()

    【T15】A. BETWEEN B. IMITATE C. ACCELERATE D. OTHERWISE PHRASES: A. ENABLING T

    下垂眉的特点是眉头低、眉峰高。

    空腹血糖的正常参考值是A、3.0~7.Immol/LB、2.8~6.5mmol/LC、3.9~6.1mmol/LD、3.2~7.8mmol/LE、4.1~6.

    展开全文
  • 本关的目标是让读者了解并掌握函数调用的相关知识。 相关知识 定义函数与调用函数的顺序 在定义了函数之后,就可以调用该函数了,但是在Python中我们要注意一个关键点,就是Python不允许前向引用,即在函数定义...

    任务描述

    函数被定义后,本身肯定不会自动执行的,只有在被调用后,函数才会被执行,得到相应的结果。

    本关的目标是让读者了解并掌握函数调用的相关知识。

    相关知识

    定义函数与调用函数的顺序

    在定义了函数之后,就可以调用该函数了,但是在Python中我们要注意一个关键点,就是Python不允许前向引用,即在函数定义之前,不允许调用该函数。例如:

    print plus(1,2)
    
    def plus(a,b):
        return a+b

    运行结果为:

    NameError: name 'plus' is not defined

    从报错结果可以看出,名字为plus的函数还没进行定义(虽然我们是在后面进行了定义)。所以当我们在调用函数时,一定要确定在调用之前进行了函数定义。

    正确使用参数

    我们要在调用函数时,需要正确调用函数的名称和参数,例如我们定义了一个加法函数:

    def plus(a,b):
        return a+b

    我们在调用plus()函数时,如果传入的参数类型不对,会报TypeError错误。而且有时我们传入的参数类型不是规定类型的话,就算调用函数运行结果没有报错,也会产生逻辑错误。例如:

    #定义plus函数,作用是求两个正整数之和
    def plus(a,b):
        return a+b
    
    #调用plus函数,参数类型为'1','2'
    print(plus('1','2'))

    输出结果:

    12

    虽然上述例子的程序运行结果没有报错,但是结果却与我们的预期不符,因为我们的本意是调用plus()函数实现两个整数的加法,但是如果我们传入的是字符串类型的数值时,结果就是两个字符串的拼接。

    所以这个例子告诉我们一定要注意传入参数的类型。

    当我们传入正常类型的参数时,传入的参数个数不一致时,也会报TypeError错误,例如:

    #定义plus函数,作用是求两个正整数之和
    def plus(a,b):
        return a+b
    
    #调用plus函数,参数为1,2,3
    print(plus(1,2,3))

    报错:

    TypeError: plus() takes 2 positional arguments but 3 were given

    报错原因显示,因为plus()函数允许有且仅有2个参数,但是却在调用时传入了3个参数,所以程序报错。

    函数的调用十分重要,只有学会正确调用函数,才会得到正确的函数运行结果。

    编程要求

    本关的编程任务是补全src/Step2/func_call.py文件的代码,实现相应的功能。具体要求如下:

    • 定义一个函数,实现对输入的数值列表进行从小到大的顺序排序;
    • 输出排序后的数值列表。

    测试说明

    本关的测试文件是src/Step2/func_call.py,测试过程如下:

    1. 平台自动编译生成func_call.exe;
    2. 平台运行func_call.exe,并以标准输入方式提供测试输入;
    3. 平台获取func_call.exe输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。

    以下是平台对src/Step2/func_call.py的样例测试集:

    测试输入:
    103,47,21,34,11,2,5,88,13
    预期输出:
    [2, 5, 11, 13, 21, 34, 47, 88, 103]

    测试输入:
    12,31,0,23,25,109,77,3
    预期输出:
    [0, 3, 12, 23, 25, 31, 77, 109]

    测试输入:
    6,4,11,34,12,1,4
    预期输出:
    [1, 4, 4, 6, 11, 12, 34]

    测试输入:
    5,4,3,2,1
    预期输出:
    [1, 2, 3, 4, 5]

    开始你的任务吧,祝你成功!

    保持对事业的努力,事业比幻想中的金钱要现实得多。这是必须牢记的原则。

    如果你觉得这一关的内容对你有帮助,请你在下面点赞。

     

    参考答案

    #coding=utf-8
    
    #输入数字字符串,并转换为数值列表
    a = input()
    num1 = eval(a)
    numbers = list(num1)
    
    # 请在此添加代码,实现编程要求
    #********** Begin *********#
    result = sorted(numbers)
    
    print(result)
    
    #********** End **********#

     

    展开全文
  • 我们一般将字符串、列表等变量作为参数进行函数调用。但函数本身也是一个对象,所以我们也可以将函数作为参数传入另外一个函数中并进行调用。 本关的目标是让读者了解并掌握函数作为参数传入另外一个函数中并进行...

    任务描述

    我们一般将字符串、列表等变量作为参数进行函数调用。但函数本身也是一个对象,所以我们也可以将函数作为参数传入另外一个函数中并进行调用。

    本关的目标是让读者了解并掌握函数作为参数传入另外一个函数中并进行调用的相关知识。

    相关知识

    我们要学习函数与函数之间的调用,就应该对函数调用的顺序与参数有清晰的认识,我们将会从五种情况让读者了解并掌握函数与函数之间的调用的基本关系和联系。

    第一种情况

    程序代码如下:

    def x(f):
        def y():
            print(1)
        return y
    
    def f():
        print(2)
    
    x(f)

    运行结果:打印出无结果

    分析:因为第9行中的x(f)中的f没有带括号,所以f只是一个普通的参数,所以程序只调用执行了x(f)函数,没有调用执行f()函数。x(f)函数中虽然也定义了y()函数,但是x(f)函数中没有调用执行y()函数,只是执行了return y。而y变量也没有值,所以整个程序的返回值就为无结果。

    第二种情况

    程序代码如下:

    def x(f):
        def y():
            print(1)
        return y
    
    def f():
        print(2)
    
    x(f())

    运行结果:2

    分析:因为第9行中的x(f())中的f()带括号,所以程序先调用执行f()函数,先输出2。然后2作为参数传入到x(f)函数中,程序开始调用执行x(f)函数。x(f)函数中虽然也定义了y()函数,但是x(f)函数中没有调用执行y()函数,只是执行了return y。而y变量也没有值,所以调用执行x(f)函数没有产生任何结果。

    所以该程序最终只输出了2

    第三种情况

    程序代码如下:

    def x(f):
        def y():
            print(1)
        return y()
    
    def f():
        print(2)
    
    x(f)

    运行结果:1

    分析:因为第9行中的x(f)中的f没有带括号,所以f只是一个普通的参数,所以程序只调用执行了x(f)函数,没有调用执行f()函数。x(f)函数中也定义了y()函数,并且返回是y()函数。所以程序调用执行了y()函数,输出结果是1

    第四种情况

    程序代码如下:

    def x(f):
        def y():
            print(1)
        return y()
    
    def f():
        print(2)
    
    x(f())

    运行结果:
    2
    1

    分析:因为第9行中的x(f())中的f()带括号,所以程序先调用执行f()函数,先输出2。然后2作为参数传入到x(f)函数中,程序开始调用执行x(f)函数。x(f)函数中也定义了y()函数,并且返回是y()函数。所以程序也调用执行了y()函数,也输出了1

    所以该程序先后输出了21

    第五种情况

    程序代码如下:

    def x(f):
        def y():
            print(1)
            print(f())
        return y()
    
    def f():
        #print(2)
        return 2
    
    x(f)

    运行结果:

    1
    2

    分析:因为第9行中的x(f)中的f没有带括号,所以f只是一个普通的参数,所以程序先只是调用执行了x(f)函数。在x(f)函数中也定义了y()函数,而且返回值是y()函数,所以程序会调用执行y()函数。在y()函数中先是执行print(1)语句,输出1。接着执行print(f())语句,所以程序在这时也会调用执行f()函数,输出2

    所以该程序先后输出了12

    以上是对函数与函数之间调用的五种情况的探讨与分析,函数作为参数传入另外一个函数中并进行调用的情况有很多,我们需要时刻注意函数调用的相关要求与细节,才能正确使用函数。

    编程要求

    本关的编程任务是补全src/step3/func_ref.py文件的代码,实现相应的功能。具体要求如下:

    • 定义一个函数,要求实现圆的面积计算;
    • 根据输入的不同整数值的半径,调用函数计算,输出圆的面积。

    测试说明

    本关的测试文件是src/step3/func_ref.py,测试过程如下:

    1. 平台自动编译生成func_ref.exe;
    2. 平台运行func_ref.exe,并以标准输入方式提供测试输入;
    3. 平台获取func_ref.exe输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。

    以下是平台对src/step3/func_ref.py的样例测试集:

    测试输入:
    4
    预期输出:
    50.27

    测试输入:
    5
    预期输出:
    78.54

    测试输入:
    6
    预期输出:
    113.1

    测试输入:
    111
    预期输出:
    38707.56

    开始你的任务吧,祝你成功!

    你可以忘掉失败,但不能忘掉教训;你可以忘掉昨天,但不能忘记历史;你可以忘掉苦难,但不能忘却艰辛;你可以忘掉伤疤,但不能忘却耻辱。

    如果你觉得这一关的内容对你有帮助,请你在下面点赞。

     

    参考答案

    #coding=utf-8
    
    from math import pi as PI
    
    n = int(input())
    
    # 请在此添加代码,实现圆的面积计算,并输出面积结果
    #********** Begin *********#
    def area(n):
        area = PI * pow(n, 2)
        return round(area, 2)
    
    print(area(n))
    
    #********** End **********#
    
    

     

    展开全文
  • linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。Shell 函数定义的语法格式如下: [function] funname [()]{ 函数体 [return int;] } 格式1: 简化写法,不写 function 关键字: 函数名(){ ...
  • 浅析函数调用

    千次阅读 多人点赞 2015-07-25 15:47:30
    1. 预备知识:函数调用大家都不陌生,调用者向被调用者传递一些参数,然后执行被调用者的代码,最后被调用者向调用者返回结果,还有大家比较熟悉的一句话,就是函数调用是在栈上发生的,那么在计算机内部到底是如何...
  • 函数调用约定的详解

    2018-11-25 00:41:46
    概述 在工作的过程中,我们总是需要调用底层函数...1、什么是调用约定(函数调用约定) 首先让我们看看一个函数被调用都经历了哪几个过程,编译器帮我们做了什么: 调用要使用的函数,现在把调用者的地址入栈(...
  • 汇编:函数调用

    千次阅读 2019-07-18 18:57:33
    让我们再回忆一下脑海中关于函数调用的概念,也许会是这个样子: 这里的“控制流转移”又是如何发生的呢?在解释这个之前,也许我们需要科普一点有关于汇编的知识。 2. 函数调用中的一些细节说明 2.1 函数调用中的...
  • Linux函数调用与栈

    千次阅读 2017-06-05 17:31:36
    栈与函数调用惯例(又称调用约定)— 基础篇 记得一年半前参加百度的校招面试时,被问到函数调用惯例的问题。当时只是懂个大概,比如常见函数调用约定类型及对应的参数入栈顺序等。最近看书过程中,重新回顾了这些...
  • 关于组合类中构造函数调用的分析

    千次阅读 多人点赞 2020-04-05 10:18:57
    关于组合类中构造函数调用的分析 组合类相关的概念 一种包含与被包含的关系。 例如,用一个类来描述计算机系统.首先可以把它分解为硬件和软件 硬件包含中央处理单元(CPU)存储器、输入设备和输出设备,软件可以包括系统...
  • 函数库中的某些函数调用了系统调用。函数库中的函数可以没有调用系统调用,也可以调用多个系统调用。编程人员可以通过函数库调用系统调用。高级编程也可以直接采用int 0x80进入系统调用,而不必通过函数库作为中介。...
  • 问题描述: 编译了一个动态库,调用的时候没有调用我写的静态库中(openssl)的函数 问题解决: 编译动态库的时候添加 -Wl,-rpath=libdir
  • 函数调用的基本原理

    千次阅读 2017-09-30 17:37:27
    程序从main函数开始顺序执行,函数调用可以看做是一个无条件跳转,跳转到对应函数的指令处开始执行,碰到return语句或者函数结尾的时候,再执行一次无条件跳转,跳转会调用方,执行调用函数后的下一条指令。...
  • C语言函数调用及栈帧分析

    千次阅读 2015-11-16 10:00:54
    C语言函数调用及栈帧分析
  • SYN攻击原理 & accpet()函数调用时机

    千次阅读 2018-07-03 10:38:12
    SYN攻击原理 & accpet()函数调用时机
  • C语言中有关外部函数调用的问题

    万次阅读 多人点赞 2016-06-16 21:44:57
    对于外部函数实体(处于调用函数所在源文件之外的其他源文件中的函数),是在链接过程中,才会被寻找和添加进程序,一旦没有找到函数实体,就会报错,无法成功链接。 而外部函数的声明(一般声明在头文件中)只是令...
  • C函数调用机制

    千次阅读 2009-04-23 19:34:00
    3.4 C与汇编程序的相互调用为了提高代码执行效率,内核源代码中有的地方直接使用...3.4.1 C函数调用机制在Linux内核程序boot/head.s执行完基本初始化操作之后,就会跳转去执行init/main.c程序。那么head.s程序是如何
  • 这些现象通常是出现在C和C++的代码混合使用的情况下或在C++程序中使用第三方的库的情况下(不是用C++语言开发的),其实这都是函数调用约定(Calling Convention)和函数名修饰(Decorated Name)规则惹的祸。函数...
  • 函数调用约定及函数名称修饰符

    千次阅读 2013-08-31 01:11:30
    几乎每种编程语言都有函数的概念,而作为函数,就一定有参数的概念;一般来说,参数的传递是通过堆栈来实现的,堆栈是一种先入后出的数据结构,使用Push()把参数压入栈中,使用Pop()把参数弹出栈,而且Push()和Pop()必须成对...
  • 用 Graphviz 可视化函数调用

    千次阅读 2015-08-23 23:13:20
    ...花一些时间遍历一下源代码,可以向您展现所有的函数调用过程;但是如果函数指针非常复杂,或者代码太长且晦涩难懂,那么这...本文将向您介绍如何使用开源软件和一些定制的代码来构建一个动态的图形函数调用
  • 栈与函数调用惯例(又称调用约定)— 正篇  在前篇笔记的基础上,本文继续介绍栈与函数调用约定的相关内容。 1. 函数调用的栈帧结构  IA32程序用栈来实现函数调用。机器用栈来传递函数参数、保存返回地址、...
  • 问题描述 在使用C++的虚函数时,parent和child类有两个函数,其中一个是虚函数: class parent{ public: void init(){cout << "in parent init" << endl;}; virtual void func(int a){ cout <<...
  • C函数调用与栈

    千次阅读 2010-08-09 00:14:00
    3.4.1 C函数调用机制 在Linux内核程序boot/head.s执行完基本初始化操作之后,就会跳转去执行init/main.c程序。那么head.s程序是如何把执行控制转交给init/main.c程序的呢?即汇编程序是如何调用执行...
  • x86下的C函数调用惯例

    千次阅读 2013-05-28 16:21:49
    x86 ABI之C函数调用惯例
  • 关于进程间函数调用,以及回调函数、共享内存的使用 最近在做项目时,需要调用一个第三方的库和框架,在项目进行一段时间之后,突然发现对该第三方的库以及框架的实现机制不太了解,现根据其函数声明以及使用方式...
  • 一般察看函数运行时堆栈的方法是使用GDB之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),...在头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈 Function: int b
  • x86函数调用堆栈的操作

    千次阅读 2016-12-31 18:15:44
    这篇blog试图讲明当一个c函数调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的。这些细节跟操作系统平台及编译器的实现有关,下面的描述是针对运行在Intel奔腾芯片上Linux的gcc编译器而言。c语言的...
  • 使用C/C++语言开发软件的程序员经常碰到这样的问题:...这些现象通常是出现在C和C++的代码混合使用的情况下或 在C++程序中使用第三方的库的情况下(不是用C++语言开发的),其实这都是函数调用约定(Calling Conventi
  • 理解javascript函数调用和“this”

    千次阅读 2012-11-13 22:11:57
    多年以来,我看到大量关于javascript函数调用的困惑。尤其,许多人抱怨函数调用中“this”的语意是混乱的。 在我看来,大量这样的混乱可以通过理解核心函数调用原语被清理,然后再看所有其他在原语之上进行包装的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 332,334
精华内容 132,933
关键字:

关于函数调用描述正确的是