求助
关于C语言函数调用者有点不大清楚,看如下程序#include<stdio.h>
int main()
{
int a = 3, b = 5;
void swap(int, int);
swap(a, b);
printf("%d%d", a, b);
return 0;
}
void swap(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
}我知道实参形参是单向值传递,形参不会改变实参值,所以结果还是a=3,b=5,但是如果把程序改为#include<stdio.h>
int main()
{
int a = { 3,5 };
void swap(int b);
swap(a);
printf("%d%d", a, a);
return 0;
}
void swap(int b)
{
int temp;
temp = b;
b = b;
b = temp;
}为什么a=5,b=3就交换了呢。 数组可以用指针来理解,定义a = { 3,5 }后,a就是指向数组第一个元素的指针,你传进swap的参数就是数组的指针,但在swap里面执行的是交换实际数组里面的值,所以在main函数里,a a的值也交换了 第二种写法其实传给函数的是个数组的地址或者说是个指针,这样函数内部就可以通过指针间接访问原数组的内存
页:
[1]