#c
#c
Вопрос:
Классифицируйте каждый формальный параметр двойной проблемы как входной выход , параметр ввода -вывода
#include "stdio.h" void double_trouble(int *p, int y){ int x; x = 10; *p = 2 * x - y; } void trouble(int *x, int *y){ double_trouble(x, 7); double_trouble(y, *x); } int main() { int x, y; trouble(amp;x, amp;y); printf("x = %d, y = %dn",x, y); return (0); }
Я думаю
Formal parameters Purpose In Called Function (double_trouble) (double_troble) int *p input/output parameter int y input parameter Formal parameters Purpose In Called Function (trouble) (trouble) int *x inputparameter int *y input/output parameter
Я прав , я не уверен, прав я или нет
Комментарии:
1. Прав ли я насчет предложенного мной решения?
2. Что касается непосредственно параметра, все параметры в C являются только входными, потому что аргументы передаются по значению, и изменение параметра внутри функции не может изменить аргумент в вызывающем объекте. Параметры могут быть выходными или входными только в косвенном смысле, когда параметр является указателем, и мы имеем в виду то, на что указывает параметр. В этом смысле,
p
double_trouble
вывод только «из», поскольку то, на что он указывает, изменено, но не используется. Затем*x
oftrouble
изменяется (когдаx
передаетсяdouble_trouble
), но не используется до этого, поэтому он является только выходным, а не по-настоящему входным.3. Аналогично,
*y
значение oftrouble
изменяется (когдаy
передаетсяdouble-trouble
), но не используется, поэтомуy
доступно только для вывода.