指针与函数

之前在介绍指针时,提到过一句话:

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个整数,按大小顺序输出。