精华内容
下载资源
问答
  • C语言形参和实参

    万次阅读 多人点赞 2017-09-05 21:44:50
    形式参数(形参):定义函数名函数体时需要用的参数,目的是用来接收调用该函数时传递的参数。 实际参数(实参):传递给被调用函数的值。 通俗的来讲,形参就像物理计算中的公式中的符号,比如Ω,A,V等,而实参...

    形式参数(形参):定义函数名和函数体时需要用的参数,目的是用来接收调用该函数时传递的参数。

    实际参数(实参):传递给被调用函数的值。

    通俗的来讲,形参就像物理计算中的公式中的符号,比如Ω,A,V等,而实参就是在计算中的实际的数值。调用过程就是实现形参与实参的结合,把实参的值通过调用传递给形参,相当于把具体的值代入公式进行计算。

     

    形式参数(形参)

    实际参数(实参)

    区别1

    形参只能是变量,在被定义的函数中,必须指定形参的类型。

    实参可以是常量、变量、表达式、函数等,

    区别2

    没有确定的值

    无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

    区别3

    形参变量在未出现函数调用时,并不占用内存,只在调用时才占用。调用结束后,将释放内存。

    开辟内存存储数据

    联系

    形参和实参的类型应相同或赋值兼容


    C语言要求函数的实参要有确定的值,在函数调用时给形参分配相应的内存单元,同时将实参的“值”赋(相当于拷贝)给形参,实现数据从实参到形参的传递(‘值传递’方式)。因为是复制,所以在操作副本(形参)过程中不会影响到原本(实参)内容。例如下面这个程序。

    #include<stdio.h>
    int main()
    {
    void exchange(int a,int b);//函数声明
    int a=5,b=3;
    exchange(a,b);
    printf("主函数a=%d,b=%d\n",a,b);
    return 0;
    }
    void exchange(int a,int b)
    {
    int t;
    t=a;
    a=b;
    b=t;
    printf("函数中a=%d,b=%d\n",a,b);
    }

    结果:

    通过这个程序我们看出在对形参进行操作的过程中,实参的值未发生变化。





    展开全文
  • C语言形参和实参的区别(非常详细) http://c.biancheng.net/view/1853.html

    C语言形参和实参的区别(非常详细)

    http://c.biancheng.net/view/1853.html

    展开全文
  • 形参(形式参数) 在函数定义中出现的参数可以看做是一个占位符,它...形参和实参的功能是传递数据,发生函数调用时,实参的值会传递给形参形参和实参的区别联系 1 . 形参变量只有在函数被调用时才会分配内存...

    形参(形式参数)

    在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参

    实参(实际参数)

    函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参

    形参和实参的功能是传递数据,发生函数调用时,实参的值会传递给形参。

    形参和实参的区别和联系

    1 . 形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。

    2 . 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的数据,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参,所以应该提前用赋值、输入等办法使实参获得确定值。

    3 . 实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。当然,如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型。

    4 . 函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参;换句话说,一旦完成数据的传递,实参和形参就再也没有瓜葛了,所以,在函数调用过程中,形参的值发生改变并不会影响实参。

    示例

    #include <stdio.h>
    
    //计算从m加到n的值
    int sum(int m, int n) {
        int i;
        for (i = m+1; i <= n; ++i) {
            m += i;
        }
        return m;
    }
    
    int main() {
        int a, b, total;
        printf("Input two numbers: ");
        scanf("%d %d", &a, &b);
        total = sum(a, b);
        printf("a=%d, b=%d\n", a, b);
        printf("total=%d\n", total);
    
        return 0;
    }
    

    运行结果:

    Input two numbers: 1 100↙
    a=1, b=100
    total=5050
    

    在上述代码中,函数定义处的 m、n 是形参,函数调用处的 a、b 是实参。通过 scanf() 可以读取用户输入的数据,并赋值给 a、b,在调用 sum() 函数时,这份数据会传递给形参 m、n。

    从运行情况看,输入 a 值为 1,即实参 a 的值为 1,把这个值传递给函数 sum() 后,形参 m 的初始值也为 1,在函数执行过程中,形参 m 的值变为 5050。函数运行结束后,输出实参 a 的值仍为 1,可见实参的值不会随形参的变化而变化

    以上调用 sum() 时是将变量作为函数实参,除此以外,你也可以将常量、表达式、函数返回值作为实参,如下所示:

    total = sum(10, 98);  //将常量作为实参
    total = sum(a+10, b-3);  //将表达式作为实参
    total = sum( pow(2,2), abs(-100) );  //将函数返回值作为实参
    

    5 . 形参和实参虽然可以同名,但它们之间是相互独立的,互不影响,因为实参在函数外部有效,而形参在函数内部有效

    示例实参和形参同名:

    #include <stdio.h>
    
    //计算从m加到n的值
    int sum(int m, int n) {
        int i;
        for (i = m + 1; i <= n; ++i) {
            m += i;
        }
        return m;
    }
    
    int main() {
        int m, n, total;
        printf("Input two numbers: ");
        scanf("%d %d", &m, &n);
        total = sum(m, n);
        printf("m=%d, n=%d\n", m, n);
        printf("total=%d\n", total);
    
        return 0;
    }
    

    运行结果:

    Input two numbers: 1 100
    m=1, n=100
    total=5050
    

    调用 sum() 函数后,函数内部的形参 m 的值已经发生了变化,而函数外部的实参 m 的值依然保持不变,可见它们是相互独立的两个变量,除了传递参数的一瞬间,其它时候是没有瓜葛的。

    如果感觉不错的话请点赞哟!!!

    展开全文
  • 关于C语言形参和实参

    2016-11-10 19:13:06
    1,对于刚接触c语言的人对于形参和实参的理解可能不是那么详细,或者说很是模糊,但大体来说形参和实参的区别在于: 形参只能是变量,而实参可以使变量,常量,也可以是表达式,关于变量,顾名思义,是一个可变的...

    1,对于刚接触c语言的人对于形参和实参的理解可能不是那么详细,或者说很是模糊,但大体来说形参和实参的区别在于:
    形参只能是变量,而实参可以使变量,常量,也可以是表达式,

    关于变量,顾名思义,是一个可变的量,我们通过一个函数来理解

    
    void Add(int a,int b)//这里a,b就是形参,只能是变量
    {
        int sum;//sum是变量,是实参,
        sum=a+b;//这是一个表达式
        printf("sum=%d\n",sum);
    }```
    

    常量:,

    void Func()
    {
        int num=5;//这就是一个常量,num在定义时直接给其赋值,是一个实参
    } 

    表达式:表达式,是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。,举个简单的例子

    int num_1=5;
    int num_2=6;
    int num_3=num_1+num_2;//这就是一个简单的表达式,

    “`

    展开全文
  • C语言形参和实参问题

    2020-12-29 11:31:09
    形参:函数被调用时接收实参的参数,是一个变量。 用两个例子来解释: example1: #include <stdio.h> int function(int a,int b) //函数定义 { a++; b++; return 0; } int main(int argc, char *argv[]) {...
  • C语言函数的参数会出现在两个地方,分别是函数定义处函数调用处,这两个地方的参数是有区别的。形参(形式参数)在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据...
  • C语言形参实参详解

    千次阅读 多人点赞 2019-01-29 15:27:56
    今天我们来说下c语言形参实参的区别,形参跟实参理解的话也很简单,但是好多同学关于这个知识点都是一知半解,没有真正的去透彻,在真正引用的时候还会出现很多问题,而百度的时候又会说看不懂,所以我们今天来做...
  • 在传递函数时,只能是把实参值传递给形参,而不能把形参值传递给实参,即实参的值不能被形参改变。 ref的作用是传递引用。当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 class ...
  • 的结果之所以不变,是因为实参向对形参的数据传递是“值传递”,单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参...
  • 在传递函数时,只能是把实参值传递给形参,而不能把形参值传递给实参,即实参的值不能被形参改变。 ref的作用是传递引用。当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 class ...
  • 实参是用来填充形参的。当函数被调用时,实参列在函数名后面的括号里。执行函数调用时,实参被传递给形参。  3。传值调用引用调用指的是用于参数传递过程中的一种机制。传值调用中,只使用了实参的值。传值...
  • C语言形参实参详解

    2020-04-06 15:55:57
    形参可以看做是一个占位符,它没有数据,只能使用其函数被调用时,才会接收值,将实参值传递给形参实参 函数被调用时给出的实际参数包含了实际数据,会被函数内部使用,该实际参数即为实参形参实参的传递 在...
  • C语言形参实参

    2019-07-19 08:53:26
    函数的参数分为形参和实参两种,形参是在定义函数名函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数,就类似小明,说了的话而不实际行动;实参是在调用时传递该函数的参数,就如小刚能实际行动起来。...
  • C语言形参实参的复习

    千次阅读 2018-04-15 13:14:36
    形参实参是单向传递,对形参变量的任何修改,绝对不会更改实参表达式原本的值! 1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,762
精华内容 11,504
关键字:

c语言形参和实参

c语言 订阅