Вызов C функция ссылка
Ссылка на параметров вызоваметода, копировать параметры адреса для формальных параметров , переданных функции. Внутри функции, адрес, используемый для доступа на вызов фактические параметры для использования. Это означает, что модифицированная форма параметров влияют на фактические параметры.
Значение передается по ссылке, указатель будет передан аргумент функции, так же, как и другие значения передаются функции то же самое. Таким образом Соответственно, следующая функцияподкачки (), вам нужно объявить функцию как аргумент типа указателя, значение функции для точек параметров для обмена двух целочисленных переменных.
/* 函数定义 */ void swap(int *x, int *y) { int temp; temp = *x; /* 保存地址 x 的值 */ *x = *y; /* 把 y 赋值给 x */ *y = temp; /* 把 temp 赋值给 y */ return; }
Для получения дополнительной указатель детали C, посетите C - указатель раздел.
Теперь перейдем по ссылке к функции вызовасвопа ():
#include <stdio.h> /* 函数声明 */ void swap(int *x, int *y); int main () { /* 局部变量定义 */ int a = 100; int b = 200; printf("交换前,a 的值: %d\n", a ); printf("交换前,b 的值: %d\n", b ); /* 调用函数来交换值 * &a 表示指向 a 的指针,即变量 a 的地址 * &b 表示指向 b 的指针,即变量 b 的地址 */ swap(&a, &b); printf("交换后,a 的值: %d\n", a ); printf("交换后,b 的值: %d\n", b ); return 0; }
Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:
Перед включением, значение: 100 Перед переключением б значения: 200 После обмена, значение: 200 После обмена, б значения: 100
Приведенный выше пример показывает, что, с традиционными ценностями различных вызовов, опорный вызов внутри функции, чтобы изменить значения а и Ь, по сути, изменили функцию вне а и Ь значений.