讓我解釋一下我的問題,我正在開發一個簡單的程式,您可以在其中定義一個二維陣列,其中您有一個從位置 (0, 0) 開始的機器人。然后輸入多個運算式(U - Up,D - Down,L - Left,R - Right)。如果您輸入其中任何一個,“機器人”應根據運算式更改其坐標(遞增 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;
}
uj5u.com熱心網友回復:
那不是如何在 C 中“通過參考傳遞”
你需要
int check_pos(char expression, int *i, int *j)
...
case 'U':
(*j) ;
returnValue = 1;
break;
并這樣稱呼它
while (check_pos(expression, ¤t_i, ¤t_j))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/439015.html
上一篇:用指標定義靜態陣列的編譯錯誤
下一篇:結構和指標取消參考問題
