精华内容
下载资源
问答
  • C语言形式参数传递的两种方式

    千次阅读 2018-10-22 20:06:15
    C语言实际参数(实参)与形式参数(形参)之间的传递方式有传值传地址两种函数调用方式。 1.直接传值。 直接传值,在fun函数里面改变a,b的值,不会改变主函数里面a,b的值。 #include<stdio.h>...

    C语言中实际参数(实参)与形式参数(形参)之间的传递方式有传值和传地址两种函数调用方式。

    1.直接传值。

    直接传值,在fun函数里面改变a,b的值,不会改变主函数里面a,b的值。

    #include<stdio.h>
    void fun(int a, int b)  // 此处a, b为形参
    {
        a++;
        b++;
    }
    void mian()
    {
        int a=1, b=2;    
        fun(a, b);  // 按传值方式调用函数fun,此处a,b为实参
        printf("%d, %d\n", a, b);  // 输出a=1, b=2
    }

    2.传地址方式

    在fun函数里面改变a.b的值,主函数里面a,b的值也会改变。

    #include<stdio.h>
    void fun(int *a, int *b)  
    {
        *a =3;
        *b =4;
    }
    void main()
    {
        int a=1, b=2;    
        fun(&a, &b);  // 按传地址方式调用函数fun
        printf("%d, %d\n", a, b);  // 输出a=3, b=4
    }

     

    展开全文
  • C语言当中的实际参数形式参数

    千次阅读 2019-04-02 14:23:10
    在面的Swap函数中的参数x,y都是形式参数,在main函数中传给Swap的num1,num2是实际参数. 我们可以来看一下上述Swap(a,b)的等价代码 int x = a; int y = b; int tmp = x; x = y; y = tmp; 我们可以理解为函数的...

    首先我们来定义一个函数,使其可以交换两个整形变量的内容.

    #include <stdio.h>
    #include <stdlib.h>
    void Swap(int x, int y){
    	int tmp;
    	tmp = x;
    	x = y;
    	y = tmp;
    }
    int main(){
    	int num1 = 10;
    	int num2 = 20;
    	Swap(num1,num2);
    	printf("num1 = %d,num2 = %d\n",num1,num2);
    }
    

    程序运行结果如下
    在这里插入图片描述
    我们不是定义了一个函数,要将num1与num2的值进行交换吗?为什么num1与num2的值没有发生变化呢?这就涉及到了C语言中函数的参数问题.
    函数的参数
    实际参数(实参):实参是真实传给函数的参数,实参可以是常量,变量,表达式,函数等.但无论实参是那种类型的量,在进行函数调用时,他们都必须要有确定的值,以便于将这些值传送给形参.
    形式参数
    形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(也就是分配内存单元),所以叫形式参数.形式参数当函数调用完成之后就自动销毁了.因此形式函数只有在函数中有效.
    在面的Swap函数中的参数x,y都是形式参数,在main函数中传给Swap的num1,num2是实际参数.
    我们可以来看一下上述Swap(a,b)的等价代码

    int x = a;
    int y = b;
    int tmp = x;
    x = y;
    y = tmp;
    

    我们可以理解为函数的形参是实参的一份拷贝.
    代码修改如下

    #include <stdio.h>
    #include <stdlib.h>
    void Swap(int* x,int* y){
    	int tmp = *x;
    	*x = *y;
    	*y = tmp;
    }
    int main(){
    	int num1 = 10;
    	int num2 = 20;
    	Swap(&num1,&num2);
    	printf("num1 = %d,num2 = %d",num1,num2);
    	system("pause");
    	return 0;
    }
    

    传值调用:
    函数的形参与实参分别占有不同内存块,对形参的修改不会影响实参.传址调用:
    传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式.这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量.

    展开全文
  • C语言--关于形式参数实际参数

    千次阅读 2018-12-19 15:08:34
    @C语言 形参与实参 举例说明 /*--第一个例子--*/ #include&lt;stdio.h&gt; //int,int-形式参数 int main () ...//此时num1与num2为实际参数 printf("...."); } //a,b为形式参数...

    @C语言

    形参与实参

    举例说明

    /*--第一个例子--*/
     #include<stdio.h>
     //int,int-形式参数
     int main ()
     {
       int num1=10;
       int num2=20;
       int result=sun(num1,num2);//此时num1与num2为实际参数
       printf("....");
     }
     //a,b为形式参数
     int sum (int a,int b)
     {
     return a+b;
     }
     /*--第二个例子--*/
    /*  实现pow函数 */
     double pow (double,int);//函数原型
     int main()
     {
     //自己调用一下
     }
     double pow (double num1,int num2)  //函数定义
     {
     	double result =1;
     	int i;
     	for(i=0;i<num2;i++)
     	{
     	result*=num1;//累乘
     	}
     	resturn result;
     }
    

    递归

    ##函数调用自己的过程(recursion)

    /*第一个例子*/
    int factorial(int num)
    {
    if(num=1)//退出条件
    return1;
    else
    	{
    	num=num*factorial(num-1);
    	return num;
       	}
    }
    int main()
    {
    int result=factorial(5);
    }
    /*第二个例子*/
    int num=0;
    void test (int num)
    {
    printf("%d\n",num++);
    test();       //自己调用自己。死循环
    }
    

    注意

    1 有反复的执行过程(调用自身)
    2有跳出反复执行过程的条件(出口)

    展开全文
  • C语言 函数参数和调用函数

    千次阅读 2019-04-14 08:39:07
    如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式...一般来说,这意味着函数内的代码不会改变用于调用函数的实际参数。函数 swap() 定义如下: /* 函数定义 */ void swap(int x, int y) { ...

    如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数
    形式参数在进入函数时被创建,退出函数时被销毁。
    当调用函数时,有两种向函数传递参数的方式:
    在这里插入图片描述

    传值方式调用函数

    默认情况下,C 语言使用传值调用方法来传递参数。一般来说,这意味着函数内的代码不会改变用于调用函数的实际参数。函数 swap() 定义如下:

    /* 函数定义 */
    void swap(int x, int y)
    {
       int temp;
    
       temp = x; /* 保存 x 的值 */
       x = y;    /* 把 y 赋值给 x */
       y = temp; /* 把 temp 赋值给 y */
      
       return;
    }
    

    现在,让我们通过传递实际参数来调用函数 swap():

    #include <stdio.h>
     
    /* 函数声明 */
    void swap(int x, int y);
     
    int main ()
    {
       /* 局部变量定义 */
       int a = 100;
       int b = 200;
     
       printf("交换前,a 的值: %d\n", a );
       printf("交换前,b 的值: %d\n", b );
     
       /* 调用函数来交换值 */
       swap(a, b);
     
       printf("交换后,a 的值: %d\n", a );
       printf("交换后,b 的值: %d\n", b );
     
       return 0;
    }
    

    交换前,a 的值: 100
    交换前,b 的值: 200
    交换后,a 的值: 100
    交换后,b 的值: 200

    上面的实例表明了,虽然在函数内改变了 a 和 b 的值,但是实际上 a 和 b 的值没有发生变化。

    引用方式调用函数

    通过引用传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。

    传递指针可以让多个函数访问指针所引用的对象,而不用把对象声明为全局可访问。

    /* 函数定义 */
    void swap(int *x, int *y)
    {
       int temp;
       temp = *x;    /* 保存地址 x 的值 */
       *x = *y;      /* 把 y 赋值给 x */
       *y = temp;    /* 把 temp 赋值给 y */
      
       return;
    }
    

    现在,让我们通过引用传值来调用函数 swap()

    #include <stdio.h>
     
    /* 函数声明 */
    void swap(int *x, int *y);
     
    int main ()
    {
       /* 局部变量定义 */
       int a = 100;
       int b = 200;
     
       printf("交换前,a 的值: %d\n", a );
       printf("交换前,b 的值: %d\n", b );
     
       /* 调用函数来交换值
        * &a 表示指向 a 的指针,即变量 a 的地址 
        * &b 表示指向 b 的指针,即变量 b 的地址 
       */
       swap(&a, &b);
     
       printf("交换后,a 的值: %d\n", a );
       printf("交换后,b 的值: %d\n", b );
     
       return 0;
    }
    

    交换前,a 的值: 100
    交换前,b 的值: 200
    交换后,a 的值: 200
    交换后,b 的值: 100

    上面的实例表明了,与传值调用不同,引用调用在函数内改变了 a 和 b 的值,实际上也改变了函数外 a 和 b 的值。

    展开全文
  • c语言 函数调用中实际参数为赋值表达式情况 例 #include<stdio.h> void zm_f(int); int main(void) { int a; a=2; printf(“a=%d\n”,a); zm_f(++a==3?8:1);/或者是将++a与其他值比较/ printf(“now a=%d\n”,...
  • 函数中的形式参数和实际参数

    千次阅读 多人点赞 2014-03-20 10:58:30
    c语言实际参数和形式参数之间采用值传递的方式来传递数据。在被调函数中,使用的是实际参数的一个拷贝数据。我们在swap函数中交换了a和b,那只是主函数x,y数据的一个辈分,不能对main函数中的x,y产生影响,就像...
  • C语言参数传递

    2016-10-01 23:33:36
    函数定义中的参数是形式参数,函数的调用者提供给函数的是实际参数。在函数调用之前,实际参数的值将被复制到这些形参中。 C语言在参数调用时,实参形参之间的数据都是单向的“值传递”方式。C语言要求函数的实参...
  • 指的是将实际参数的值复制给形式参数一份,由被调用函数使用参与被调函数的运算,在这个过程中,实际参数的数值不会发生变化,而形式参数从产生、到最后的消失除将实际参数的值复制给形式参数这一个联系外,二者没有...
  • C语言参数宏定义

    2016-10-25 09:21:06
    在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,这点函数有些类似。 对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。 带参宏定义的一般形式为: #define 宏名(形参列表)...
  • C语言函数的参数

    千次阅读 2019-03-21 23:07:27
    一、函数的参数可以是变量、变量指针变量引用: void funcA(int8_t x) { x=x+1; } 代码说明:该函数的参数属于值传递,在调用该函数时,仅仅只是把实参的值拷贝了一份赋值给了形参x,之后的任何操作都不会影响到...
  • C语言参数的main函数的编译运行

    千次阅读 2019-05-27 10:39:18
    这里主要介绍的是C99标准下的C语言main函数形式C语言中,main函数可以带参数也可以不带参数。 不带参数的main函数格式为: main() //它实际上是 main(void)的简写 C语言中如果miain函数需要带参数,带参数的...
  • printf函数的参数类型输出形式 字符 参数类型 输出形式 d,i int 十进制数 o int 无符号八进制数(不含前导0) x,X int 无符号十六进制数(没有前导0x或0X),10~15分别用abcdef(参数类型为小写x时)...
  • C语言参数的宏定义

    千次阅读 2019-01-24 21:21:56
    参数的宏定义不是简单的字符串替换,还要进行参数替换。一般格式如下: #define 宏名(参数表)字符串 程序举例: 对两个数实现乘法、加法混合运算。 #include &lt;stdio.h&gt; #define MIX(a,b) (...
  • c语言的命令行参数

    千次阅读 2014-04-06 19:27:23
    C语言命令行参数 C语言命令行参数实例代码教程 -它是可能的C程序执行时,在命令行中传递一些值。这些值被称为命令行参数,很多时候,你的程序是非常重要的,特别是当你要控制你的程序从外部而不是硬编码在代码...
  • C语言参数宏定义

    2015-01-13 18:31:03
    C语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。 被定义为“宏”的标识符称为...在C语言中,“宏”分为有参数和无参数两种。本节讨论无参数宏。 无参宏定义 无参宏的宏名后不带参数。其定义的
  • C语言函数的参数和返回值

    千次阅读 2014-04-10 17:44:18
    形式参数和实际参数 前面已经介绍过,函数的参数分为形参和实参两种。在本节中,进一步介绍形参、实参的特点和两者的关系。形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。 实参出现在...
  • [C语言] 命令行参数

    2019-08-19 00:51:42
    不带命令行参数 C语言源程序经编译连接处理,生成可执行程序后,才能运行。例如,test.c是一个简单的C语言源程序: #include<stdio.h> int main(void) { printf("Hello world\n"); return 0; } ...
  • C语言中不定参数函数

    2018-05-06 16:25:43
    在我们平常调用函数的时候,会进行传参,调用的函数也会有参数去接收,数量类型都是对应的。而不定参数函数是指对一个函数传参,参数的个数可以不确定。接下来,我就简单的叙述一下不定参数函数的原理及应用。  ...
  • 值传递,就是把你的变量的值传递给函数的形式参数实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值 引用传递,实际是通过指针来实现的,能达到使用的效果如传址,...
  • 汇编向C语言参数传递的问题

    千次阅读 2018-12-08 23:57:38
    ARM编程中使用的C语言是标准C语言,ARM的开发环境实际上就是嵌入了一个C语言的集成开发环境,只不过这个开发环境与ARM的硬件紧密相关。 在使用C语言时,要用到汇编语言的混合编程。若汇编代码较为简洁,则可使用...
  • C语言函数参数的传递详解

    千次阅读 多人点赞 2019-03-31 15:04:54
    a,b变量为Exchg1函数的实际参数。 / printf("a = %d, b = %d.\n”, a, b); return(0); } 我问:Exchg1()里头的printf(“x = %d, y = %d.\n”, x, y);语句会输出什么啊?我再问:Exchg1()后的printf("a = %d, b =...
  • C语言参数传递类型

    千次阅读 2016-09-22 16:10:12
    /*a,b变量为Exchg1函数的实际参数。*/  printf("a = %d, b = %d.\n”, a, b);  return(0); } 我问:Exchg1()里头的printf("x = %d, y = %d.\n", x, y);语句会输出什么啊?我再问:Exchg1()后的printf("a ...
  • C语言不定参数的两种实现

    千次阅读 2018-12-02 15:48:38
    1、使用以下三个函数可实现不定参数 #include&lt;stdarg.h&gt; void va_start(va_list ap, last);...该函数用来初始化指针变量ap(va_list实际是void类型),之后处理参数就默认从ap开始处理。last一般...
  • 在宏定义中的参数称为形式参数,在宏调用中的参数称为实际 参数。 对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。 带参宏定义的一般形式为: #define 宏名(形参列表) 字符串 在字符串中含有各个...
  • 实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argcargv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc...
  • C语言main函数参数

    千次阅读 2014-11-12 20:03:42
    实际上,main函数可以带参数,这个参数可以认为是main函数的形式参数C语言规定main函数的参数只能有两个,习惯上这两个参数写为argcargv。因此,main函数的函数头可写为:  main (argc,argv) C语言还规定argc...
  • C语言参数函数的原里

    千次阅读 2010-09-26 16:51:00
    它除了有一个参数format固定以外,后面跟的参数的个数类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式: printf("%d",i); printf("%s",s); printf("the number is %d ,...
  • java和c语言变长参数的底层实现存在着区别java其实是一个语法糖 类似private static int sumUp(int... values) { }其实最后编译时会转化为 实际上是传递了一个数组引用private static int sumUp(int[] values) { }...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 92,638
精华内容 37,055
关键字:

c语言形式参数和实际参数

c语言 订阅