函数指针不在 C 中赋值
Function pointer not assigning value in C
让我解释一下我的问题
我正在开发一个简单的程序,您可以在其中定义一个二维数组,其中您有一个从位置 (0, 0) 开始的机器人。然后输入一些表达式(U - 上,D - 下,L - 左,R - 右)。如果您输入其中任何一个,'robot' 应该根据表达式更改其坐标(递增 1)。
现在,我正在尝试编辑 while() 循环中值的坐标,但我尝试对其进行调试,即使我输入了一个有效的表达式(例如 D,表示向下),坐标仍然是'已修改。
例如,如果我输入 DR,我的最终坐标应该是 (1, 1)。
代码:
#include<stdio.h>
#include<stdlib.h>
int check_pos(char expression, int i, int j) {
int* pos;
int returnValue;
switch (expression)
{
case 'U':
pos = &j;
*pos++;
returnValue = 1;
break;
case 'D':
pos = &j;
*pos--;
returnValue = 1;
break;
case 'L':
pos = &i;
*pos--;
returnValue = 1;
break;
case 'R':
pos = &i;
*pos++;
returnValue = 1;
break;
default:
returnValue = 0;
break;
}
return returnValue;
}
int main()
{
int n, m;
int current_i = 0, current_j = 0;
printf("Input values:\n");
scanf("%d %d", &n, &m);
char expression;
scanf(" %c", &expression);
while(check_pos(expression, current_i, current_j)) {
check_pos(expression, current_i, current_j);
scanf("%c", &expression);
}
printf("Expression: %c\n", expression);
printf("Final positions: %d %d\n", current_i, current_j);
return 0;
}
这不是如何在 C
中 'pass by refereence '
你需要
int check_pos(char expression, int *i, int *j)
...
case 'U':
(*j)++;
returnValue = 1;
break;
然后这样称呼它
while (check_pos(expression, ¤t_i, ¤t_j))
让我解释一下我的问题 我正在开发一个简单的程序,您可以在其中定义一个二维数组,其中您有一个从位置 (0, 0) 开始的机器人。然后输入一些表达式(U - 上,D - 下,L - 左,R - 右)。如果您输入其中任何一个,'robot' 应该根据表达式更改其坐标(递增 1)。
现在,我正在尝试编辑 while() 循环中值的坐标,但我尝试对其进行调试,即使我输入了一个有效的表达式(例如 D,表示向下),坐标仍然是'已修改。
例如,如果我输入 DR,我的最终坐标应该是 (1, 1)。
代码:
#include<stdio.h>
#include<stdlib.h>
int check_pos(char expression, int i, int j) {
int* pos;
int returnValue;
switch (expression)
{
case 'U':
pos = &j;
*pos++;
returnValue = 1;
break;
case 'D':
pos = &j;
*pos--;
returnValue = 1;
break;
case 'L':
pos = &i;
*pos--;
returnValue = 1;
break;
case 'R':
pos = &i;
*pos++;
returnValue = 1;
break;
default:
returnValue = 0;
break;
}
return returnValue;
}
int main()
{
int n, m;
int current_i = 0, current_j = 0;
printf("Input values:\n");
scanf("%d %d", &n, &m);
char expression;
scanf(" %c", &expression);
while(check_pos(expression, current_i, current_j)) {
check_pos(expression, current_i, current_j);
scanf("%c", &expression);
}
printf("Expression: %c\n", expression);
printf("Final positions: %d %d\n", current_i, current_j);
return 0;
}
这不是如何在 C
中 'pass by refereence '你需要
int check_pos(char expression, int *i, int *j)
...
case 'U':
(*j)++;
returnValue = 1;
break;
然后这样称呼它
while (check_pos(expression, ¤t_i, ¤t_j))