Код перестает работать, если его оформить в виде функции - C (СИ)
Формулировка задачи:
Допустим у меня некая программа
Работает она верно, все в порядке, но как только я хочу использовать свою функцию, она работает неверно. Выводит нули. Объясните, пожалуйста, господа присяжные, почему?
#include <stdio.h>
#include <stdlib.h>
void s4et(double,double);
int main(void)
{
double h=0,c=0;
printf("Hello world!\n");
h=c+25;
c=h+4;*/
printf("a=%lf\tb=%lf",h,c);
return 0;
}#include <stdio.h>
#include <stdlib.h>
void s4et(double,double);
int main(void)
{
double h=0,c=0;
printf("Hello world!\n");
s4et(h,c);
printf("a=%lf\tb=%lf",h,c);
return 0;
}
void s4et(double a,double b)
{
a=b+25;
b=a+4;
}Решение задачи: «Код перестает работать, если его оформить в виде функции»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
void s4et(double,double);
int main(void)
{
double h=0,c=0;
printf("Hello world!\n");
s4et(&h,&c);
printf("a=%lf\tb=%lf",h,c);
return 0;
}
void s4et(double* a,double* b)
{
*a=*b+25;
*b=*a+4;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: stdio.h и stdlib.h.
- Объявление функции s4et с двумя аргументами типа double и двумя указателями на double.
- В функции main создаются две переменные типа double: h и c, и инициализируются значением 0.
- Вывод сообщения
Hello world!. - Вызов функции s4et, в которую передаются адреса переменных h и c.
- Вывод значений переменных h и c с помощью функции printf.
- Возврат 0 из функции main, что означает успешный конец работы программы.
- В функции s4et происходит приведение указателей на double к типу double и запись в них новых значений.
- Значение переменной a увеличивается на 25, а значение переменной b на 4.
- Значение переменной a записывается в переменную b, а значение переменной b записывается в переменную a.