c语言中参数是什么概念
发布时间:2025-05-12 16:41:05 发布人:远客网络
一、c语言中参数是什么概念
1、函数的参数分为形参和实参两种。
2、形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
3、形参和实参的功能是作数据传送,发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。
4、定义一个函数s=f(a,b),功能是将a和b的差赋值给s,那么,a和b就是这个函数的两个参数。
5、方法有3种方式:值传递、地址传递、引用传递
6、被调用函数的形参只有函数被调用时才会临时分配存储单元,一旦调用结束占用的内存便会被释放
7、值传递和地址传递,传递的都是实参的一个拷贝
8、C语言中实参和形参之间的数据传递是单向的“值传递”,单向传递,只能由实参传给形参,反之不行
9、输出格式并没有选择%p而是选择了%d,因为十进制的数看起来更直观。
10、printf("before:实参为a,b\na=%d,地址为%d\nb=%d,地址为%d\n\n",a,&a,b,&b);
11、printf("after:实参为a,b\na=%d,地址为%d\nb=%d,地址为%d\n\n",a,&a,b,&b);
12、printf("inside:形参为x,y\nx=%d,地址为%d\ny=%d,地址为%d\n\n",x,&x,y,&y);
二、C语言的传值和传址的区别
1、在传值中函数参数压栈的是参数的副本,任何的修改是在副本上作用,没有作用在原来的变量上。
2、传址中压栈的是指针变量的副本,当你对指针解指针操作时,其值是指向原来的那个变量,所以对原来变量操作。
函数传参有三种传参方式:传值、传址、传引用。
(1)形参和实参各占一个独立的存储空间。
(2)形参的存储空间是函数被调用时才分配的,调用开始,系统为形参开辟一个临时的存储区,然后将各实参传递给形参,这是形参就得到了实参的值。
地址传递与值传递的不同在于,它把实参的存储地址传送给形参,使得形参指针和实参指针指向同一块地址。因此,被调用函数中对形参指针所指向的地址中内容的任何改变都会影响到实参。
引用传递是以引用为参数,则既可以使得对形参的任何操作都能改变相应数据,又使函数调用方便。引用传递是在形参调用前加入引用运算符“&”。
引用为实参的别名,和实参是同一个变量,则他们的值也相同,该引用改变则它的实参也改变。
三、c语言形参的值能不能传递给实参
1、形参和实参拥有分别的存储空间,即便是指针传递,改变的也只可能是这个指针变量所指向的内容,而不是指针变量本身的值,也即,如有指针变量p,那对实参的变化,有可能改变的也只是*p的值,而不是p本身的值。
2、实参和形参在英文中,argument和parameter经常可以互换使用,但是C99标准规定了:
3、对于actualargument或actualparameter使用术语argument(译为实参);对于formalargument或formalparameter使用术语parameter(译为形参)。
4、为遵循这一规定,我们可以说形参是变量,实参是函数调用提供的值,实参被赋给相应的形参。因此,在上述示例中,times是pound()的实参,n是pound()的形参。类似地,在函数调用pound(times+4)中,表达式times+4的值是该函数的实参。
5、第1个函数调用是pound(times),times的值5被赋给n。因此,printf()函数打印了5个井号和1个换行符。第2个函数调用是pound(ch)。
6、这里,ch是char类型,被初始化为!字符,在ASCII中ch的数值是33。但是pound()函数的参数类型是int,与char不匹配。
7、程序开头的函数原型在这里发挥了作用。原型(prototype)即是函数的声明,描述了函数的返回值和参数。pound()函数的原型说明了两点:
8、-该函数没有返回值(函数名前面有void关键字);-该函数有一个int类型的参数。