두 개의 다른 기능을 사용하여 변수를 업데이트하려고합니다. 나는 약간의 C 프로그램을 작성하여 설명했다 :값이 C에서 둘 이상의 함수를 통과 할 때 변수를 업데이트하려면 어떻게해야합니까?
#include <stdlib.h>
#include <stdio.h>
void updateHelper(int *x, int y) {
*x = y;
}
void update(int x, int y) {
updateHelper(&x, y);
}
int main(int argc, char *argv[]) {
int num = 0;
update(num, 1);
printf("%d\n", num);
return 0;
}
왜이 인쇄가 0이 아닌 1입니까? 나는 이것에 대해 내 머리를 감쌀 수 없다. 실제로 값을 업데이트하는 함수는 참으로 변수 (!?)의 참조를 전달합니다. 왜 이런 일이 일어 났는지 설명 할 수 있습니까?
update()의 인수는 포인터가 될 수 없습니다. 이에 대한 가능한 해결 방법이 있습니까?
''update'의 리턴 타입을 바꿀 권한이 있습니까? – fvu
아니요. 실제 문제는 데이터 구조를 업데이트하려고하는 중입니다. 그리고 인터페이스는이 예에서 void update (int, int)로 함수를 선언합니다. 정말 이렇게 할 방법이 없습니까? – lsund
흠, 단순화/난독 화로 인해 문제를 이해하기 어렵거나 유효한 대안을 제시하는 것이 어려워 졌다고 생각합니다. – fvu