Классифицируйте каждый формальный параметр двойной проблемы как входной выход , параметр ввода -вывода

#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 of trouble изменяется (когда x передается double_trouble ), но не используется до этого, поэтому он является только выходным, а не по-настоящему входным.

3. Аналогично, *y значение of trouble изменяется (когда y передается double-trouble ), но не используется, поэтому y доступно только для вывода.