指针与函数
之前在介绍指针时,提到过一句话:
C语言当中,只有传值,没有引用。想要对值进行传递,就必须要通过指针。
这句话什么意思,我们这一讲就来理解一下。
传值
之前学习函数的时候遇到一个问题,实参与形参都有自己独立的内存空间,所以不通过指针,进行交换两个数的操作,达不到想到的结果。下面是以前的例子:
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
因为在这个步骤中,只有传值,并没有真正修改到实参的内容。对于这个问题,现在我们用指针来解决:
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a = 4, b = 6;
swap(&a, &b);
}
思考:如果将上面的swap
函数修改为一下形式,能达到交换效果吗?
void swap(int *a, int *b) {
int *temp = a;
a = b;
b = temp;
}
习题:
不使用返回值,求两个数的最大值。
输入a、b、c3个整数,按大小顺序输出。