C语言函数调用参数传递的是什么?

Python018

C语言函数调用参数传递的是什么?,第1张

C语言传递的是值而不是地址,这一点从VB转过来的程序员一定要注意。否则不经意间就会犯错误。另外下层函数修改上层函数变量不是一种好习惯,容易引发错误。C语言中函数可以返回一个函数值,如果你需要返回多个函数值可以用下面的形式

fun(int *a, int *b)

{ *a=1*b=2}

main()

{ int a, b

fun(&a,&b) a,b的值被改变

}

如果按VB的习惯,

fun(int a, int b)

{ a=1b=2}

main()

{ int a, b

fun(a,b);a、b的值没有改变

}

是错误的,main中的a,b和fun中的a,b完全是两码事,结果就是调运fun没有任何效果。

分两种,一种是按值传递,一种是按地址传递,

按值传递就是在子函数中开辟出一个临时内存空间,将传递的数值保存在这个空间中,当子函数结束后,这个内存空间就会释放了!

按地址传递则是把主函数开辟的某个内存空间首地址传递给子函数,子函数可以直接读写主函数上这段内存空间,当子函数结束后,这部分空间不会被释放,主函数将继续使用这段空间!