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