¿Cómo se cambian los punteros en una función?Cambiar punteros en una función en el lenguaje de programación 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;
}
En C, * todo * se pasa por valor. Si desea que una función cambie algo, debe pasarle un puntero. Por lo tanto, si desea que una función cambie un puntero, debe pasarle un puntero. Es decir, pasar un puntero a un puntero. Una vez que empiezas a pensar así, todo se vuelve fácil (bueno, no todo, ¡pero al menos funciona como función!) –