Составители:
Рубрика:
61
printf(“ var = %d\n”,++var); /* var = 14 */
}
void ff( void )
{
int var=55;
printf(“ var = %d\n”,var); /* var = 55 */
}
void fl( void )
{
printf(“ var = %d\n”,var); /* var = 5 */
}
5.5. Параметры и аргументы функций
В языке С все аргументы функции передаются по значению. При
вызове функции в стеке выделяется место для формальных параметров
функции, и в это место заносится значение фактического параметра, т.
е. значение параметра при вызове функции. Далее функция использует
это значение, при этом она может изменить значение параметра. При
выходе из функции измененные значения параметров теряются. Таким
образом, в языке С вызванная функция не может изменить значения
переменных, указанных в качестве фактических параметров при обра-
щении к ней. Например, функция swap(), которая должна менять значе-
ние параметров местами, не будет этого делать:
/* Пример 39 */
void swap(int a, int b)
{
int tmp=a;
a=b;
b=tmp;
}
Но тем не менее функцию можно приспособить для изменения аргу-
ментов. Для этого необходимо в качестве параметра передавать адрес
переменной, которую надо изменять, т. е. передавать указатель на пере-
менную. Такой прием в языке С называется передачей параметра по
ссылке. Вызванная функция должна описывать аргумент как ссылку и
обращаться к фактической переменной косвенно, через эту ссылку. Если
Страницы
- « первая
- ‹ предыдущая
- …
- 59
- 60
- 61
- 62
- 63
- …
- следующая ›
- последняя »