【C语言】函数 & 指针

函数传值

如果函数只是传入变量值(不是数组),那么传入变量值作用域只有该函数内部

#include <stdio.h>

void swap(int x, int y);

void swap(int x, int y){
    int tmp; // 存储临时变量

    printf("swap 传入值交换前 x = %d , y = %d \n", x, y);

    tmp = x;
    x = y;
    y = tmp;

    printf("swap 传入值交换后 x = %d , y = %d \n", x, y);
}

int main(){
    int x = 111,y = 222;
    printf("main 传入指针互换前 x = %d , y = %d \n", x, y);
    swap(x,y);
    printf("main 传入指针互换后 x = %d , y = %d \n", x, y);
    return 0;
}

mark

函数传址(指针)

函数如果传入指针(地址),在函数内部改变指针,外部会跟着改变。

#include <stdio.h>

void swapzz(int *x, int *y);
/*
 * 交换数字
 */
void swapzz(int *x, int *y) {
    printf("swap 传入指针交换前 x = %d , y = %d \n", *x, *y);
    int tmp;
    tmp = *x;
    *x = *y;
    *y = tmp;
    printf("swap 传入指针交换后 x = %d , y = %d \n", *x, *y);

}

int main() {
    int x = 111, y = 222;
    printf("main 传入指针互换前 x = %d , y = %d \n", x, y);
    swapzz(&x,&y);
    printf("main 传入指针互换后 x = %d , y = %d \n", x, y);
    return 0;
}

mark

函数传入数组

函数传入数组,本质是传入一个指针

#include <stdio.h>

void get_arr(int arr[3]);

void get_arr(int arr[3]){
    int i;

    arr[1] = 520;

    printf("get_arr 方法内 ");
    for (i = 0;i < 3;i++){
        printf(" %d ",arr[i]);
    };
}

int main(){
    int arr[3] = {1,2,3};
    get_arr(arr);

    int i;
    printf(" \n main 方法内 ");
    for (i = 0;i < 3;i++){
        printf("%d ",arr[i]);
    }

    return 0;
}

mark

发表评论 / Comment

用心评论~