当学习一门新的编程语言时,你可能会遇到一个问题,那就是这门语言默认是按值传递还是按引用传递。
因此,我的问题是,对于你们所熟悉的编程语言,它是如何实现的?有哪些可能的陷阱?
你喜欢的编程语言可以是任何你曾经使用过的:流行的(如Ruby)、冷门的(如Obscure)、古怪的(如Brainfuck)、新颖的(如CUDA)、老旧的(如FORTRAN)等等...
当学习一门新的编程语言时,你可能会遇到一个问题,那就是这门语言默认是按值传递还是按引用传递。
因此,我的问题是,对于你们所熟悉的编程语言,它是如何实现的?有哪些可能的陷阱?
你喜欢的编程语言可以是任何你曾经使用过的:流行的(如Ruby)、冷门的(如Obscure)、古怪的(如Brainfuck)、新颖的(如CUDA)、老旧的(如FORTRAN)等等...
默认情况下,ANSI/ISO C 使用以下两种方式之一——这取决于您如何声明函数及其参数。
如果您将函数参数声明为指针,则该函数将按引用传递,如果您将函数参数声明为非指针变量,则该函数将按值传递。
void swap(int *x, int *y); //< Declared as pass-by-reference.
void swap(int x, int y); //< Declared as pass-by-value (and probably doesn't do anything useful.)
float *FtoC(float temp)
{
float c;
c = (temp-32)*9/5;
return &c;
}
然而,您可以返回对静态变量的引用或传递在参数列表中的指针。
float *FtoC(float *temp)
{
*temp = (*temp-32)*9/5;
return temp;
}