함수에서 포인터를 어떻게 전환합니까?C 프로그래밍 언어의 함수에서 포인터 전환
void ChangePointers(int *p_intP1, int *p_intP2);
int main() {
int i = 100, j = 500;
int *intP1, *intP2; /* pointers */
intP1 = &i;
intP2 = &j;
printf("%d\n", *intP1); /* prints 100 (i) */
printf("%d\n", *intP2); /* prints 500 (j) */
ChangePointers(intP1, intP2);
printf("%d\n", *intP1); /* still prints 100, would like it swapped by now */
printf("%d\n", *intP2); /* still prints 500 would like it swapped by now */
}/* end main */
void ChangePointers(int *p_intP1, int *p_intP2) {
int *l_intP3; /* local for swap */
l_intP3 = p_intP2;
p_intP2 = p_intP1;
p_intP1= l_intP3;
}
C에서는 * everything *이 값으로 전달됩니다. 함수가 무언가를 변경하기를 원한다면 포인터를 전달해야합니다. 그래서 포인터를 변경하는 함수가 필요하면 포인터를 포인터에 전달해야합니다. 포인터를 가리 키십시오. 일단 당신이 그렇게 생각하기 시작하면, 모든 것이 (모든 것이 아니라, 적어도 기능 호출이라면) 쉽게된다. –