Este programa es exactamente igual al de la carpeta anterior, excepto en un detalle: "la llamada a la funcion malloc() no se realiza desde el programa principal, sino desde la funcion auxiliar PedirMemoria()". La instruccion TIPO *v; v = (TIPO *) malloc(sizeof(TIPO) * n); asigna a v el puntero a la primera componente de un nuevo vector de tipo TIPO con n componentes. Si pretendemos realizar esta operacion dentro de la funcion PedirMemoria() tendremos que utilizar &v en lugar de v para que la funcion PedirMemoria() pueda modificar el valor de v. Por ello, en el programa principal escribiremos PedirMemoria(n, &v); y la definicion de la funcion sera la siguiente void PedirMemoria(int ncomponentes, TIPO **x) { *x = (TIPO *) malloc(sizeof(TIPO) * ncomponentes); ... } ya que &v es un puntero a v, y v es un puntero a una variable de tipo TIPO, por lo que lo recibido como x sera un puntero a un puntero a una variable de tipo TIPO.