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没有任何效果。
分两种,一种是按值传递,一种是按地址传递,按值传递就是在子函数中开辟出一个临时内存空间,将传递的数值保存在这个空间中,当子函数结束后,这个内存空间就会释放了!
按地址传递则是把主函数开辟的某个内存空间首地址传递给子函数,子函数可以直接读写主函数上这段内存空间,当子函数结束后,这部分空间不会被释放,主函数将继续使用这段空间!