C/Visual C - Dobles punteros en C

 
Vista:
Imágen de perfil de Gonzalo
Val: 1
Ha disminuido su posición en 25 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Dobles punteros en C

Publicado por Gonzalo (1 intervención) el 06/12/2019 20:33:01
Hola, alguien me puede dar una ayuda con este código de insertar ordenado en una lista? , no logro comprender el nodo** lista, por que se pasa como doble puntero? que función cumple.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void insertar_ordenado (nodo** lista, elemento e){
    nodo* actual;
    nodo* anterior;
    nodo* nuevo = malloc(sizeof(nodo));
    nuevo->e=e;
    actual=*lista;
    anterior=NULL;
    while(actual!=NULL && actual->e.dni < e.dni){
         anterior=actual;
         actual=actual->sig;
    }
    if(anterior!=NULL){
         anterior->sig=nuevo;
         nuevo->sig=actual;
    }else{
         nuevo->sig=*lista;
         *lista=nuevo;
   }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 36
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Dobles punteros en C

Publicado por Allan (18 intervenciones) el 25/02/2020 22:39:21
Mira esto https://www.uv.es/eees/archivo/PON-C-13.pdf está bien explicado

Pero para que lo vea más facil
Digamos que sabes donde vive tu amigo y sabes su dirección y todo sobre como llegar,
pero otro amigo tuyo quiere esa dirección y te pregunta entonces tu amigo sabe la dirección de tu otro amigo
porque tu tienes esa información, algo así funcionan los dobles punteros

En este caso un puntero apunta a la dirección de memoria de un valor y el doble puntero
apunta a la dirección de la dirección de memoria de un valor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Dobles punteros en C

Publicado por Rodrigo (119 intervenciones) el 11/03/2020 15:05:10
En C no es posible modificar las variables cuando la pasas a una funcion.
Siempre se pasa el valor, nunca la variable.

Para poder lograr que una variable cambie, se hacen 3 cosas:
- en vez de pasar la variable, se pasa la direccion de ella
- en la funcion, en vez de recibir el valor de la variable, se recibe la direccion de ella, en un puntero (el tipo apuntado tiene que calzar con el tipo de la variable)
- al cambiar el valor, se desreferencia el puntero que contiene la direccion de la variable.

El tipo del puntero definido en el parametro, depende del tipo de variable que se quiere modificar.
Si se quiere modificar una variable que guarda un entero (int), el puntero sera un int*
si se quiere modificar una variable que guarda un char (char), el puntero sera un char*
y finalmente esto tambien se puede extender a variables que ya guardan una direccion de memoria, como los punteros
si se quiere modificar una variable que guarda un puntero a lista (lista*), el puntero sera un lista**
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar