函数指针不在 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, &current_i, &current_j))