Почему вызванная функция не может изменить переменную из вызывающей функции? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

У меня вопрос: Почему вызванная функция не может изменить переменную из вызывающей функции (она, типа того, может менять только свою собственную временную копию) - ну и передала бы значение временной копии вызывающей функции. Чтобы вызванная функция смогла изменить переменную из вызывающей функции надо прибегнуть с заморочками в виде адресов и указателей. Зачем? Нашла такой пример: Например функция swap: Описание этой функции:
void swap (int *px, int *py)
Вызов этой функции:
swap (&a, &b);
почему б просто не передать в функцию swap аргументы a и b и передала бы получившиеся значения вызывающей функции? зачем в вызове нужны эти амперсанды (взятие адреса)? а в аргументах зачем печатать другие имена (почему не *a и *b) ? Непонятно. Объясните, пожалуйста.
Непонятно, зачем нужен адрес в памяти? можно же просто ограничиться значением.

Решение задачи: «Почему вызванная функция не может изменить переменную из вызывающей функции?»

textual
Листинг программы
scanf("%d", &x);

Объяснение кода листинга программы

  1. Ввод числа с клавиатуры с помощью функции scanf
  2. Сохранение введенного числа в переменной x

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы