c语言参数传递
① c语言中,带参数的主函数,如何传递参数
是将实参的值按一定顺序赋给形参
值的传递是单方面的
形参值的改变并不影响实参
② c语言 数组作为参数传递
调用时实参只写数组名不加方括号就是引用数组整体
③ 关于C语言的参数传递顺序……
楼主您好,首先您要理解一下i++的行为,即先用i,然后再++,所以,传递参数时先用i=1的值,用完了然后++,即先用x=y=1=i,然后i=2;我把程序给您改一下,你就会根据结果看的很明白了。
#include <stdio.h>
int f(int x,int y)
{
printf("x=%d\n",x);//显示传递过来的i值
printf("y=%d\n",y); //显示传递过来的i++值
if(x>y) return 1;
else if(x<y) return -1;
else return 0;
}
int main()
{
int i=1;
int k;
k=f(i,i++);
printf("i=%d\n",i);//显示执行完函数后i的值
printf("k=%d\n",k);
return 0;
}
结果:x=1 y=1 i=2 k=0
楼主您的部分理解是对的,而结果有时候跟编译器有关,它的编译顺序是不一样的。
f(++i,i) 和f(i,++i)运行结果都与理解一致, f(i++,i) 和f(i,i++)运行结果与理解不一致;++是一种缩写,对于y=i++,就是y=i,然后i=i+1;对于y=++i,就是i=i+1,然后y=i.
④ c语言函数调用时,参数是如何传递的
建立中间变量(形参),把实参值赋值给中间变量,当被调函数返回值时,系统释放掉中间变量。
在程序中通过对函数的调用来执行函数体,其过程与其它语言的子程序调用相似。对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。
函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。例如:z=max(x,y)是一个赋值表达式,把max的返回值赋予变量z。
(4)c语言参数传递扩展阅读:
C语言中又规定在以下几种情况时可以省去主调函数中对被调函数的函数说明。
1、如果被调函数的返回值是整型或字符型时,可以不对被调函数作说明,而直接调用。这时系统将自动对被调函数返回值按整型处理。例8.2的主函数中未对函数s作说明而直接调用即属此种情形。
2、当被调函数的函数定义出现在主调函数之前时,在主调函数中也可以不对被调函数再作说明而直接调用。例如例8.1中,函数max的定义放在main 函数之前,因此可在main函数中省去对max函数的函数说明int max(int a,int b)。
3、如在所有函数定义之前,在函数外预先说明了各个函数的类型,则在以后的各主调函数中,可不再对被调函数作说明。
⑤ C语言函数调用参数传递的是什么
分两种,一种是按值传递,一种是按地址传递,
按值传递就是在子函数中开辟出一个临时内存空间,将传递的数值保存在这个空间中,当子函数结束后,这个内存空间就会释放了!
按地址传递则是把主函数开辟的某个内存空间首地址传递给子函数,子函数可以直接读写主函数上这段内存空间,当子函数结束后,这部分空间不会被释放,主函数将继续使用这段空间!
⑥ C语言传值参数传递的含义
在函数定义中,当形参是普通的数据类型时,一般按值传递的,也就是说,传递的是实参的拷贝,所以在函数内部对形参进行的操作将不影响实参,当形参为指针时,传递的是数据在内存中的地址,此时在函数内部对形参的操作将影响实参。
⑦ C语言中的参数传递方式有哪些
是函数参数的传递方式吧。c语言的话是:值传递和指针(地址)传递。c++的话除了c语言的两种方式外还有引用传递。
⑧ C语言函数参数传出怎么用
struct Student st;
void function(struct Student st);这种形式就是传递地址;
void fuction2(struct Student * pst);这种形式就是传递结构体的地址;
调用这两个函数的形式如下:
function(st);
fuction2(&st);
一般推荐第二种方式,因为第一种方式需要传递整个结构体,需要开辟sizeof(struct student)这么大的内存空间,开销太大,第二种方式则只需要开辟四个字节的内存,用来存放地址;
⑨ C语言中main()的参数传递
传进来的都是指向字符串类型的指针,不能直接用==判断,得用strcmp函数来做。
if(strcmp(argv[1],"/ON")||strcmp(argv[2],"1"))
⑩ c语言中,带参数的主函数,如何传递参数给它
不可能按值传递的,设想一下
type
*arr
=。。。。。
sizeof(arr)为100万了字节,如果按照值传递,就要创建一个临时变量temp也为100万个字节,效率岂不是太低了。再可能arr是堆内存,参数传递是要属性相同,值相同,难道系统自行去new一段内存,这该用户去释放
还是系统自动回收呢?