Задание на работу с указателями
Задание:
- Напишите функции (сумма и разность), выполняющие арифметические операции с двумя числами. На вход - два числа одного типа (int, например), возвращаемое значение аналогично.
- Создайте в main описание указателя на функцию, соотв. созданным функциям
- Вызовите с помощью указателя первую и вторую ф-ии с одинаковыми значениями переменных, выведите результаты
- Выведите значения аргументов, с которыми вызывали ф-ии
- Измените функции, чтобы они принимали адреса переменных. Пусть вторая из функций обменивает значения переменных.
- Вызовите новые ф-ии с теми же значениями. Результаты работы функций не должны отличаться)
- Выведите в конце и переменные, значения дб. изменены
Код:
#include <stdio.h>
#pragma warning(disable:4996)
int sum(int a, int b) {
return a + b;
}
int diff(int a, int b) {
return a - b;
}
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int (*pf1)(int, int) = sum;
int (*pf2)(int, int) = diff;
int a = 10, b = 20;
int result1 = (*pf1)(a, b);
int result2 = (*pf2)(a, b);
printf("Result 1: %d\n", result1);
printf("Result 2: %d\n", result2);
pf1 = diff;
pf2 = swap;
(*pf1)(&a, &b);
(*pf2)(&a, &b);
printf("a: %d\n", a);
printf("b: %d\n", b);
return 0;
}
Что не так и как исправить?
Источник: Stack Overflow на русском