如何在c中正确调用另一个函数中的函数?

如何在c中正确调用另一个函数中的函数?,c,function,C,Function,我正在尝试创建一个switch语句,它将根据用户输入的内容调用函数,但每次我将需要执行的所有操作都放入函数中时,它都无法正常工作。我说得对吗 /*two functions I am using*/ void MoveUp(char *move, int *place, char temp[ ], struct Player *Data, struct board room[ ]); void Movement(char *move, int place, char tem

我正在尝试创建一个switch语句,它将根据用户输入的内容调用函数,但每次我将需要执行的所有操作都放入函数中时,它都无法正常工作。我说得对吗

/*two functions I am using*/

void MoveUp(char *move, int *place, char temp[ ], struct Player *Data, struct board           room[ ]);
void Movement(char *move, int place, char temp[ ], struct Player Data, struct board room[ ]);

/*function calling MoveUp function which actually does all the work*/
void Movement(char *move, int place, char temp[], struct Player Data, struct board room[ ])
{
     printf("Please Enter move: ");
     *move = getchar();
     getchar();

 if(*move == 'k')
 {  
         MoveUp(&*move, &place, temp, &Data, room);
     }


 else if(*move == 'q'){DataDisp(Data);}
}
函数
MoveUp
必须修改变量,但移动只修改字符移动。
当我将
MoveUp
函数外部的所有内容放入if语句(这意味着是一个switch:P)中时,所有内容都正常工作,但当我将其放入函数中时就不正常了

您的函数具有以下类型的变量:

void MoveUp(char *move, int *place, char temp[ ], struct Player *Data, struct board           room[ ]);
void Movement(char *move, int place, char temp[ ], struct Player Data, struct board room[ ]);
char*,而另一个函数采用相同的类型,因此必须使用以下函数调用它:

MoveUp(move, place, ...);

没有&or*

如果这些函数应该修改
struct Player
,那么使用
struct Player Data
调用
Movement()
这一事实意味着您的复制和更改将在返回时被丢弃

将其更改为指针:

void Movement(char *move, int place, char temp[ ], struct Player * Data, struct board room[ ]);

操作员
&
*
相互抵消<代码> MOVUP(移动…./CODE)也一样好。如果我是你,我会考虑切换到C++……嗯,这是HW,所以我有点坚持C.@ USE248510:那个“建议”。毫无意义。不,这是错误的。这不是必须的。用
&*ptr
调用函数肯定是不习惯的和可怕的,但是既然
*ptr
是左值,而
&
是“逆”值
*
的运算符,两者是等效的。参见另一个答案。那么,当我调用MoveUp函数时,我应该如何传递变量以便MoveUp可以修改它们?C中没有引用。现在在MoveUp中,您通过指向
结构播放器的指针传递
数据
,这样您就可以修改算了吧。