我有以下类似C的程序,我试图在以下时间计算出数组x的最终值:
CODE:
void swap(int[] list, int i, int j)
{
int temp = list[i];
list[i] = list[j];
list[j] = temp;
}
void main()
{
int x[3] = {5, 2, 4};
swap(x, 1, 2);
}
如果我正确地关注,为了传递值,在我们的通话中......
swap(x, 1, 2)
{
temp = x[1] // temp now equals 2
x[1] = x[2] // x[1] now equals 4
x[2] = temp // x[2] now equals 2
}
...那么我们有以下内容,对吗?
x[3] == {5, 4, 2}
编辑:
我尝试在ideone.com上进行编译并收到:
prog.c:1:17: error: expected ‘;’, ‘,’ or ‘)’ before ‘list’
void swap(int[] list, int i, int j)
^
prog.c:8:6: warning: return type of ‘main’ is not ‘int’ [-Wmain]
void main()
^
prog.c: In function ‘main’:
prog.c:11:5: warning: implicit declaration of function ‘swap’ [-Wimplicit-function-declaration]
swap(x, 1, 2);
^
答案 0 :(得分:1)
实际上,当你打电话
swap(x, 1, 2);
您正在使用 call-by reference ,因为您传递了参数x,这是一个指针 到数组x的第一个元素。因此,这种交换技术将起作用,你会得到你所期望的,元素现在将按顺序{5,4,2}