精华内容
下载资源
问答
  • 形参和实参改变
    千次阅读
    2021-05-21 16:06:52

    一 形参与实参

    1).定义

    形参:形式参数。

    就是定义函数的时候,写在函数名小括号后面的参数叫形参

    实参:实际参数。

    就是调用函数的时候,调用函数时写在函数名小括号后面的参数就叫实参

    2).注意项

    a.实参既可以放常量,也可以放变量,还可以放表达式;形参:它其实可以理解为就是这个函数的局部变量

    b.实参给形参传值,其实只是相当于给函数的形参(局部变量)赋值

    c.值传递:在函数内改变了形参的值,不会影响到外面的实参

    d.在C语言中,除了数组以外,所有的类型作为实参传递都是值传递

    二 有参函数

    带参数的函数定义语法:

    void  函数名(类型 参数名){

    函数体;

    }

    应用场景:当函数完成某个功能必须要外界传入一些数据的时候,就用参数

    tips:代码例子如下

    #include

    /*

    * 判断一个数是不是水仙花数

    */

    void isFlower(int num){

    int bai = num / 100;

    int shi = num / 10 % 10;

    int ge = num % 10;

    //如果 百*百*百 + 十*十*十 + 个*个*个 等于这个数

    if( bai*bai*bai + shi*shi*shi + ge*ge*ge == num){

    //就是水仙花数

    printf("%d是水仙花数\n",num);

    }else{

    //    否则 不是水仙花数

    printf("%d不是水仙花数\n",num);

    }

    }

    //2、写一个函数,求指定某个数到某个数之间所有的整数的累加和

    //如:3到8,算出3+4+5+6+7+8 = ?

    void getN2MSum(int n,int m){

    int sum = 0;

    if(n < m){ //n比m小的情况

    for (int i=n; i<=m; i++) {

    sum += i;

    }

    }else{ //m比n小的情况

    for (int i=m; i<=n; i++) {

    sum += i;

    }

    }

    printf("%d到%d之间的和为%d\n",n,m,sum);

    }

    // 3、用函数来实现判断一个年份是不是闰年

    void isRunYear(int year){

    if( year % 400 ==0  || (year%4==0 && year %100!=0) ){

    printf("%d年是闰年\n",year);

    }else{

    printf("%d年是平年\n",year);

    }

    }

    int main(int argc, const char * argv[]) {

    //调用语法:函数名(实参列表);

    isFlower(200);

    getN2MSum(100,1);//10+11+12....+20

    isRunYear(1900);

    return 0;

    }

    更多相关内容
  • 形参和实参的区别

    千次阅读 2022-07-12 15:44:49
    实际参数简称“实参”。在调用有参函数时,函数名后面括号中的参数称为“实际参数”,实参...实参和形参可以重名。形参是在定义函数名函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。必须注意实参

    实参

    实际参数简称“实参”。在调用有参函数时,函数名后面括号中的参数称为“实际参数”,实参可以是常量、变量、表达式或者函数。需要注意的是,在进行函数调用时,这些实参必须要有明确的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。在调用函数过程中发生的实参与形参间的数据传递,常称为“虚实结合”。

    形参

    自定义函数中的“形参”全称为"形式参数" 由于它不是实际存在变量,所以又称虚拟变量。实参和形参可以重名。形参是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。必须注意实参的个数,类型应与形参一一对应,并且实参必须要有确定的值。

    根据实际需要可有可无。没有形参时,圆括号也不可省;多个参数之间应用逗号分隔。参数包括参数名和参数类型。

    形参的类型说明可有如下两种格式:

      int max(int  a,int b)/*形参的类型在形参表中直接说明*/
    
        {  return (a>b?a:b);}int max(a,b)
    
       inta,b;         /*形参的类型在函数体前、函数名后说明*/
    
       { return(a>b?a:b); }
    
    前者为标准格式,后者为传统格式,通常用前者。
    

    区别

    1.本质不同:形参的本质是一个名字,不占用内存空间。实参的本质是一个变量,已经占用内存空间。

    2.作用域不同:形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。 形参和实参的功能是作数据传送,发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。

    3.生命周期不同:形参变量只有在被调用时才分配内存单元(栈空间),在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。

    //形参:存在栈空间,被调用的时候才为形参申请内存,调用结束,内存被系统释放
    int test(int x){//形式参数,包含变量类型,变量名
    	printf("test函数的x值为:%d,地址为:%p\n",x,&x);
    	return 0;
    }
    //变量四要素:名,类型,值,地址
    int main(){
    	int x;
    	int y;
    	puts("请输入一个数:\n");
    	scanf("%d",&x);
    	y = test(x);//实际参数
    	printf("main函数的x值为:%d,地址为:%p\n",x,&x);
    	return 0;
    }
    //56
    // test函数的x值为:56,地址为:000000000061FDF0
    // main函数的x值为:56,地址为:000000000061FE18
    

    4.形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。而如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身,所以在函数体内部可以改变实参的值。

    5.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。


    以上摘自https://blog.csdn.net/qq_33187168/article/details/50346465?spm=1001.2101.3001.6661.1&depth_1-utm_relevant_index=1

    展开全文
  • Java——形参和实参的区别

    千次阅读 2021-02-12 10:03:14
    形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存...

    形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。

    实参出现在主调函数中,进入被调函数后,实参变量也不能使用。

    形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。

    1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。

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

    3.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。

    4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

    5.当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。

    如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在函数体内部可以改变实参的值。

    转自:http://blog.163.com/zhengguo_li/blog/static/703014802013423501214/

    形参:全称为"形式参数"是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传如的参数.

    实参:全称为"实际参数"是在调用时传递个该函数的参数.

    void Exchg1(int x, inty)

    {inttmp;

    tmp=x;

    x=y;

    y=tmp;

    printf("Exchg1:x=%d,y=%d\n",x,y);

    }void Exchg2(int &x, int &y)

    {inttmp;

    tmp=x;

    x=y;

    y=tmp;

    printf("Exchg2:x=%d,y=%d\n",x,y);

    }void Exchg3(int *x, int *y)

    {inttmp;

    tmp=*x;*x=*y;*y=tmp;

    printf("Exchg3:x=%d,y=%d\n",*x,*y);

    }voidmain()

    {int a=4,b=6;

    Exchg1 (a,b) ;

    printf("a=%d,b=%d\n",a,b);

    Exchg2 (a,b);

    printf("a=%d,b=%d\n",a,b);

    Exchg3(&a,&b) ;

    printf("a=%d,b=%d\n",a,b);

    }

    这里Exchg1函数被调用的时候,并没有成功交换a跟b的数据。为何呢。

    int a=4,b=6;   Exchg1 (a,b) ; //这里本质上发生的是:Exchg1 (intx=a,int y=b) ;   x跟y是函数定义里面的形参,也就是说这里只是把实参a跟b的值赋予了x,y这2个形参变量。接下来,函数里发生的值互换只换掉了x跟y的值,而实参a跟b没有影响。

    Exchg2 (a,b); //再看本质Exchg2 (int &x=a,int &y=b);   这里x跟y都是a,b的引用,操作x跟y交换就等于a跟b交换,自然,调用Exchg2 可以成功交换a跟b

    Exchg3(&a,&b) ; //Exchg3(int *x=&a,int *y=&b);   x跟y2个形参是a跟b的指针,也就是实参数据存放的地址。然后函数里交换了x跟y指向的数据,也就是实参a跟b,所以,交换也是成功的。

    代码运行的结果,exchg1没有交换a,b值;exchg2交换了a,b值,到了exchg,a,b的值似乎没有交换,仍旧是a为4,b为6,刚开始以为代码有问题,后来设置了断点之后,发现代码运行到exchg3(&a,&b)时,a=6,b=4了,所以代码运行结果和初始值一样的话,说明已经交换了a,b的值,至此说明代码是没有任何问题的。

    转自:http://blog.sina.com.cn/s/blog_58c3f7960100ptri.html

    展开全文
  • C语言形参和实参的区别(非常详细)

    万次阅读 多人点赞 2019-11-03 17:45:23
    C语言函数的参数会出现在两个地方,分别是函数定义处函数调用处,这两个地方的参数是有区别的。 形参(形式参数) 在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来...

    如果把函数比喻成一台机器,那么参数就是原材料,返回值就是最终产品;从一定程度上讲,函数的作用就是根据不同的参数产生不同的返回值。

    这一节我们先来讲解C语言函数的参数,下一节再讲解C语言函数的返回值。

    C语言函数的参数会出现在两个地方,分别是函数定义处和函数调用处,这两个地方的参数是有区别的。
    形参(形式参数)
    在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。
    实参(实际参数)
    函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。

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

    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) ); //将函数返回值作为实参

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

    更改上面的代码,让实参和形参同名:
    #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++指针使用形参改变实参的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 形参实参

    千次阅读 多人点赞 2021-04-18 17:06:52
    形参变量: 形参变量是功能函数里的变量,只有在被调用的时候才分配内存单元,调用结束后立即释放。所以形参只在函数内部...举例一:(形参不能改变实参) 看看下面这段代码中实参和形参的位置, 这个过程中实参
  • 引用博客 引用博客形参就是形式参数,用于定义方法的时候使用的参数,用来接收调用者传递的参数。形参只有在方法被调用的...在函数调用过程中·,形参的值发生改变,而实参的值不会发生改变。 在引用传递调用的机制中
  • C语言形参和实参

    2021-10-13 16:24:11
    C语言函数的参数会出现在两个地方,分别是函数定义处函数调用处。 形参的解释 在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参...
  • 形参实参的关系

    2022-06-01 22:27:43
    形参实参的关系
  • 在C语言中关于形参和实参的传递分为两种:值传递地址传递。地址传递又分为:参数为指针...这样来分析形参和实参的数值改变问题就很简单了。例题:在此题中,地面上的所有参数为a,b,p1,p2,要调用的实参为指针变量p1...
  • 形参和实参的定义区别

    千次阅读 2021-09-24 13:13:43
    实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。 举例 int a=10;//则a为...
  • 昨天在Python学习群里有位路人甲问了个Python函数中关于形参和实参一个很基础的问题,虽然很基础,但是对于很多小白来说不一定简单,反而会被搞得稀里糊涂。人生苦短,我用Python。为了解答大家的这个疑惑,小编在...
  • python 中的形参实参

    千次阅读 2022-03-13 16:51:28
    python 中的形参实参 基本定义 形参:形式参数,在定义函数时,函数名后面括号中...值传递引用传递的基本区别是,进行值传递后,形式参数的值发生改变,实际参数的值不变;而进行应用传递后,形式参数的值发生改变
  • C/C++形参和实参的区别?

    千次阅读 2021-05-05 20:07:20
    关于定义的文字解释可以搜索相关概念,在这里,我们来结合简单的代码来看一下形参和实参的定义: 说的通俗一点就是函数声明定义时候的参数,是形参形参不占用内存空间,而在函数调用过程中传的参数是实参,...
  • 函数形参和实参

    2021-05-13 19:40:56
    C语言函数的参数会出现在两个地方,分别是函数定义处函数调用处,这两个地方的参数是有区别的。...形参和实参的区别联系形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量
  • C语言中函数形参实参的区别

    千次阅读 2021-10-02 22:56:10
    众所周知一个函数有两种参数,即形参和实参。那么究竟什么是形参什么是实参呢? 形参:在定义函数时指定的参数,在未出现函数调用时,他们并不占用内存中的存储单元。只有在发生函数调用时,函数中的形参才被分配...
  • 当函数需要用形参改变实参时,简单的传值不能解觉问题。这时就需要使用指针解决问题。 例:int a=10;b=20;要求写一个函数将a,b的值互换。 错误代码: 1. //交换失败,原因a,b仅仅只是赋值,main中的aSwap中的a不是...
  • C语言--形参和实参

    2021-01-10 21:14:09
    在被调函数中,若只是改变形参的值,函数调用完成后形参被释放,这时不会改变实参的值。 在被调函数中,若通过形参指针改变指针指向地址的值时,实参的值会被修改。 #include <stdio.h> int
  • 但是如果在形参中加入地址符时候就会改变实参的值,为什么? 请看下面的例子: 复制代码 代码如下: <?php //编写一个函数swap(),测试该函数的实参值无改变 function swap($a,$b) { echo “进入swqp()函数前 \n”;...
  • C#形参实参

    2021-04-12 23:19:56
    C#中的形参和实参 形参(形式参数) 在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参实参(实际参数) 函数被调用时给出的参数...
  • java中的形参和实参

    2021-03-08 07:21:31
    要理解形参和实参,并在编码中避免一些必要的错误,需要弄清两个概念。1、什么是形参和实参2、方法调用时参数传递的过程3、值传递引用传递import lombok.AllArgsConstructor;import lombok.Data;import lom...
  • 形参和实参

    万次阅读 多人点赞 2018-06-10 11:11:28
    1、概念形参全称为“形式参数”是在定义函数名函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者...
  • 形参和实参——Java值传递详细说明

    千次阅读 2021-06-10 09:48:38
    三、基本数据类型、普通对象引用类型、String及基本数据类型装箱类的引用类型---的值传递 概述: 基本数据类型-----形参改变无法改变实参 普通引用类型(对象)-----形参改变,因实参和形参 指向同一个目标对象实例...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,969
精华内容 27,587
关键字:

形参和实参改变