精华内容
下载资源
问答
  • 函数形参

    2018-08-27 21:28:51
    函数形参 函数形参的定义方式: 位置形参 星号元组形参 命名关键字形参 双星字典形参 位置形参: 语法: def 函数名(形参名1,形参名2,...): 语句块 自己理解:按照位置顺序依次一对一接收的形参 ...

    函数形参

    函数形参的定义方式:

    位置形参
    星号元组形参
    命名关键字形参
    双星字典形参
    
    • 位置形参:
      • 语法:
    def 函数名(形参名1,形参名2...):
        语句块

    自己理解:按照位置顺序依次一对一接收的形参
    * 星号元组形参
    * 语法:

    def 函数名(*元组形参名):
        语句块
    * 作用:收集多余的位置传参
    * 说明:元组形参名一般命名为 'args'
    * 自己理解:位置形参传递完后,将多余的位置形参打包形成元组传递给星号元组形参,元组形参名这个变量绑定的就是打包后的元组
    

    示意:

    def mysum(a, b, *args):
        pass
    mysum(1, 2, 3, 4, 5, 6)
    # 按位置把实参 1,2 传递给a和b ,剩下的3,4,5,6打包成一个元组(3,4,5,6)传递给*args 也就是 元组变量args 绑定了元组(3,4,5,6),就可以直接在函数调用中使用了。
    mysum(1,2)
    # 位置实参正好够用,没有多余位置实参,则args=空元组,采用len(args)判断
    mysun(*[1,2])
    # 在函数调用时采用星号,相当于将可迭代对象拆解成一个个元组,中间用逗号隔开而已,此处即是将列表拆开成1,2 然后按位置传递给a,b 即可
    • 命名关键字形参:
      • 语法:
    def 函数名(*, 命名关键字形参):
        语句块
    def 函数名(*args, 命名关键字形参):
        语句块
    * 作用:强制所有的参数都必须使用关键字传参或 字典关键字传参
    * 注: * 分隔符, * 后边的形参必须使用关键字传参
    *  *args 后边的形参必须使用关键字传参
    

    * 双星字典形参:
    * 语法:

    def 函数名(**字典形参名):
        语句块
    * 作用:收集多余的关键字传参
    * 说明:字典形参名一般命名为 kwargs
    * 自己理解:函数调用处:** 将字典拆解成关键字实参,可以进行参数传递
    * 自己理解: 函数定义处:** 将接收的多余的的关键字打包形成字典
    

    示例:

    def fun2(a, b, *args, c, d):
        pass
    # *args 后边的形参c,d都必须是关键字形参
    fun2(1, 2, 10, 11, 12, d=3, c=4)
    fun2(1, 2, **{'c': 3, 'd': 4})  # **拆解字典进行关键字传参

    ** 函数参数说明:
    位置形参,缺省参数,星号元组形参,双星号字典形参等可以混合使用

    函数参数自左至右的顺序为:
        1. 位置形参
        2. 星号元组形参
        3. 命名关键字形参
        4. 双星号字典形参
    

    示例:

    def fn(a,b,*args, c, **kwargs):
        pass
    fn(100, 200, 3, 4, 5, d='D', e='E',c='C')
    # 100--> a   200-->b    (3,4,5)-->agrs
    # 'C'-->c    {'d':'D', 'e':'E'}-->kwargs
    
    • 缺省参数: 给定参数默认值 内部给定默认实参 函数定义时一次性给定
    展开全文
  • Golang const 可以修饰函数形参吗? 类似于 C++ 中的const修饰函数形参
  • void f(int b[]) //数组做函数形参 {  cout } void main() { int a[5]={1,2,3,4,5};  cout  f(a); } 程序运行结果输出的两个值(实参数组地址和形参数组地址)是一样的。 说明当实参和形参都是数组...

    (1)

    #include <iostream.h>
    void f(int b[])   //数组做函数形参
    {
      cout<<b<<endl; //输出形参数组地址
    }
    void main()
    { int a[5]={1,2,3,4,5};
      cout<<a<<endl; //输出实参数组地址
      f(a);
    }

    程序运行结果输出的两个值(实参数组地址和形参数组地址)是一样的。

    说明当实参和形参都是数组类型时,实参数组和形参数组共用一块内存空间。


    (2)

    #include <iostream.h>
    void f(int *b)   //指针变量做函数形参
    {
      cout<<b<<endl;   //输出指针变量的值(即指针变量自己的内容)
    }
    void main()
    { int a[5]={1,2,3,4,5};
      cout<<a<<endl;  //输出实参数组地址
      f(a);
    }

    程序运行结果输出的两个值(实参数组地址和形参指针变量本身的值)是一样的。

    说明形参指针b指向实参数组的首地址。

    (3)

    #include <iostream.h>
    void f(int *b) //指针变量做函数形参
    {
      cout<<&b<<endl; //输出指针变量的地址

    }
    void main()
    { int a[5]={1,2,3,4,5};
      cout<<a<<endl;//输出实参数组地址
      f(a);
    }

    程序运行结果输出的两个值(实参数组地址和形参指针变量的地址)是不一样的。

    说明形参是指针变量时,但发生函数调用时,系统会为形参变量开辟空间,空间中的值是实参数组的地址。

    展开全文
  • C++三种函数形参形式

    2020-08-04 19:16:38
    C++三种函数形参 C++三种函数形参简介为什么使用指针或引用作为形参使用引用和指针有什么区别使用常量引用 简介 普通形参 :普通形参只是把实参的值拷贝给形参,对形参的改变不会影响到实参。 指针形参 :...

    C++三种函数形参

    C++三种函数形参简介为什么使用指针或引用作为形参使用引用和指针有什么区别使用常量引用

    简介

    1. 普通形参 :普通形参只是把实参的值拷贝给形参,对形参的改变不会影响到实参。

    2. 指针形参 :指针形参传入一个指针,本质上也是值传递,把实参的值传递给形参,但此时实参和形参都是指针,形参值和实参值一样,都指向实参指向的对象,此时,修改形参指向的对象就是修改实参指向的对象。

    3. 引用参数 :把引用作为参数传递给形参,引用不是对象,只是一个别名,和指针形参一样,形参和实参会指向同一个对象。使用形参可以改变实参指向的对象。

    为什么使用指针或引用作为形参

    1. 使用引用或指针可以避免拷贝大的对象或者容器,有的类型不支持拷贝,这时候只能使用指针或引用。

    2. 一个函数只能返回一个参数,如果一个函数需要返回多个参数,可以使用指针或引用改变实参的值,实现了返回多个参数。

    使用引用和指针有什么区别

    1. 使用引用所做的事,使用指针都可以做到。但指针过于灵活导致使用指针比较危险,如果使用引用就可以做到尽量使用引用,以免发生意外。

    2. 引用比指针使用起来形式上更漂亮,使用引用指向的内容时可以之间用引用变量名,而不像指针一样要使用*;定义引用的时候也不用像指针一样使用&取址。

    3. 引用比指针更安全。由于不存在空引用,并且引用一旦被初始化为指向一个对象,它就不能被改变为另一个对象的引用,因此引用很安全。对于指针来说,它可以随时指向别的对象,并且可以不被初始化,或为NULL,所以不安全。const 指针虽然不能改变指向,但仍然存在空指针,并且有可能产生野指针(即多个指针指向一块内存,free掉一个指针之后,别的指针就成了野指针)。

    使用常量引用

    1. 如果不需要改变被引用量的值,尽量使用常量引用。

     

    展开全文
  • const与&修饰函数形参

    2019-11-06 16:39:59
    c++中const与&修饰函数形参的四种情况

    C++中,const与&修饰函数形参的可能情况有四种;C语言中,情况只有1)和3)两种。

    1) string str

    这是最普通的传值调用,首先对原str进行一次拷贝,会调用拷贝构造函数。str可以被修改,但修改的只是复制的值,而不会影响到本身的str。

    2) string &str

    这是引用,传递过来的就是str本身,在函数里修改str的话都会修改str本身,但不会调用拷贝构造函数。

    3) const string str

    传值调用,str是复制的值且不能被修改,但会调用拷贝构造函数。

    4) const string &str

    引用传递,str不能被修改,而且也不会调用拷贝构造函数。

    数组作为函数形参时,不能用const或者&修饰,而且在函数中修改数组的值会影响到数组本身。

    展开全文
  • 函数形参中值传递与地址传递
  • void *作为函数形参类型

    千次阅读 2020-04-01 10:49:55
    编译报错,修改如下: 查看库函数中memcpy()函数:到安装位置去找。 IAR forarm 没有给memcpy函数的源代码 ...2.void *作为函数形参类型可以传递任何类型的指针参数,调用时不需要再强制转换。 ...
  • 指针数组做函数形参

    千次阅读 2018-10-23 13:43:00
    在设计函数过程中,想要函数参数传入一个指针数组,多为字符串数组,在函数形参的设计上有两种思路,具体以下列两种应用场景为说明 一、字符串处理函数strsort 从程序设计角度来看,将多个字符串传递给函数处理时...
  • C语言结构体变量作为函数形参

    千次阅读 2019-09-29 16:21:20
    *C语言结构体变量作为函数形参* | 例子1 #include<stdio.h> #include<stdbool.h> typedef struct { int a; double b; bool flag; }User; User f(User user) { ...
  • 函数形参与实参注意事项: 1.未进行函数调用时,形参并不占内存存储单元。只有调用函数,形参才被分配内存,调用结束形参内存单元被释放。 2.实参可以是常量、变量或表达式,但要求有确定值。 使用print(i,i++);,是...
  • c++之函数形参和实参

    千次阅读 2019-03-24 13:00:00
    c++之函数形参和实参讲解 1、非地址型参数 在c++中实现模块化编程时,我们形成会遇到对自定义的函数模块传入参数的操作,即形参。这里主要讲解一个非地址型的形参。 不多说,先看代码: 1 #include <...
  • Python的函数形参和返回值传递的都是地址,类似于C++ 中的址传递。C++中默认不加引用符号&amp;是值传递,函数体中会复制形参进行计算而形参的值不变。Python中默认就是址传递。 ...
  • 1、函数形参1.1 函数形参名(此处只讨论带参函数)函数参数都有一个外部参数名和一个本地参数名。外部参数名用来标记传递给函数调用的参数,本地参数名在实现函数的时候使用。 一般情况下,第一个参数省略其外部...
  • 函数形参传递的指针,只能修改指针指向的内存的值,而不能修改指针的指向; 因此,如果你要修改指针的指向时,必须把指针的指向变成一种值的形态,就是指向指针的指针的作用,通过指向指针的指针,你可以在函数中...
  • 【C++】c++之函数形参和实参

    千次阅读 2019-03-24 13:00:00
    c++之函数形参和实参 c++之函数形参和实参讲解 1、非地址型参数 在c++中实现模块化编程时,我们形成会遇到对自定义的函数模块传入参数的操作,即形参。这里主要讲解一个非地址型的形参。 不多说,先看代码: ...
  • 函数形参传递

    2012-05-14 15:51:30
    写一个小程序,编译链接都木有问题,但是运行就会...后来单步运行发现,一个参数作为子函数形参传递,该参数在子函数中的值被改变为预期的值,但是主函数中该参数没有变化,最终原因确定为自己写子函数的时候,只是将
  • 测试环境: win10 x86-64 gcc: x86_64-pc-cygwin...2)数组作为函数形参时将被转化为指向数组第一个元素的指针,无论是int a[10]还是int a[]形式的形参,在函数内部都是int *a形式指针 3)没有办法直接将数组本身...
  • 函数形参实参个数匹配 function getSum(sum1, sum2) { console.log(sum1 + sum2); } // 1. 如果实参的个数和形参的个数一致 则正常输出结果 getSum(1, 2); // 2. 如果实参的个数多于形参的个数 会取...
  • 在上一篇文章《C函数的“传值调用”和“传址调用”的深入分析》我们分析了函数参数的使用,对于一级指针,理解起来相对容易,而二级指针参数的理解相对难一些,我们先说一下二级指针作为函数形参的目的。 二级指针...
  • 当智能指针作为函数形参时,在调用此函数时,形参代表的智能指针的引用计数将+1,同时退出此函数时,该形参的引用计数将-1. 当形参不是智能指针时,调用该函数和退出该函数时,该形参的引用计数不会变化: 当...
  • c++中为什么函数形参多用引用

    千次阅读 2018-07-29 21:51:39
    函数形参定义为引用的好处: 1)引用不产生新的变量,减少形参与实参传递时的开销 2)如果希望实参随形参改变,用一般引用;如果不希望实参随形参改变,用常引用...
  • 还是有差别的 虽然大多数时候都可以相互用最大的差别就是指针可以改变,可以通过指针...举个例子:(分别作为形参) int num[10], *p; p = num;//此时p指向数组的第一个元素 在主函数里调用两个函数 1 Sum(num);
  • C语言中函数形参和实参是十分重要的概念,初学者很容易混淆。 形参:顾名思义,形式参数,仅仅是声明了参数的类型和参数名称,未实际分配内存和赋值。 实参:实际参数,是指函数调用时,实际赋值和分配内存空间。 ...
  • 函数形参中的const引用 这里将C++ Primer中函数形参章节有关const和引用的问题简单小结如下: 一、非const非引用形参 这个是一个平庸的情形。函数参数通过复制对应的实参实现初始化,函数本身对形参的修改...
  • 这是类别《小知识点》的第一篇,特此说明,此类别记录一些计算机、编程语言等相关的杂散知识点,有...一、JS 函数形参 1、JS形参不能赋初值,且默认类型与值为undefined php、c/c++、java中函数形参可赋初值,从而可省
  • C++ PTA 引用作函数形参交换两个整数

    千次阅读 2020-05-31 15:57:31
    C++ PTA 引用作函数形参交换两个整数 设计一个void类型的函数Swap,该函数有两个引用类型的参数,函数功能为实现两个整数交换的操作。 裁判测试程序样例: #include <iostream> using namespace std; /* 请在...
  • 那么,在定义函数的时候,函数形参变量可以接收实参变量传递过来的数据。所以,函数指针变量是一种变量类型,也可以作为函数形参变量。程序测试例子如下: 程序运行结果如下: 可以看到,函数func1的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 249,968
精华内容 99,987
关键字:

函数形参