No es capaz de entender las notaciones: * y ** con punteros.

Tengo un problema con los punteros. Sé lo que hace esto:

*name 

Entiendo que esto es un puntero.

He estado buscando pero no entiendo lo que hace esto ni he encontrado información útil

 **name 

El contexto es int ** nombre, no multiplicación

¿Alguien podría ayudarme?

NOTA: Sin el contexto adecuado, el uso de *name y **name es ambiguo. puede retrato (a). operador de desreferencia (b) operador de multiplicación

Teniendo en cuenta que estás hablando de un escenario como

  • char * name;
  • char **name;

en el codigo,

  • *name

name es un puntero a un char .

  • **name

name es un puntero, al puntero a un char .

No se confunda con “doble puntero”, que a veces se usa para indicar puntero a un puntero, pero en realidad se supone que significa un puntero a una variable de tipo de doble información.

Un visual abajo

introduzca la descripción de la imagen aquí

Como arriba, podemos decir

 char value = `c`; char *p2 = &value; // &value is 8000, so p2 == 8000, &p2 == 5000 char **p1 = &p2; // &p2 == 5000, p1 == 5000 

Entonces, p1 aquí, es un puntero a puntero. Espero que esto aclare las cosas ahora.

En realidad es muy simple, considera esto:

 int a; // a is an int int* b; // b is a pointer to an int int** c; // c is a pointer to a pointer to an int 

Si ve cada nivel como solo otro tipo de variable (entonces, vea * int como un tipo), es más fácil de entender. Otro ejemplo:

 typedef int* IntPointer; IntPointer a; // a is an IntPointer IntPointer* b; // b is a pointer to an IntPointer! 

¡Espero que ayude!

puntero almacena la dirección de la variable, puntero a puntero almacena la dirección de otro puntero.

 int var int *ptr; int **ptr2; ptr = &var; ptr2 = &ptr; cout << "var : " << var; cout << "*ptr : " << *ptr; cout << "**ptr2 : " << **ptr2; 

Puedes mirar aqui

 int a = 5;// a is int, a = 5. int *p1 = &a; // p1 is pointer, p1 point to physical address of a; int **p2 = &p1; // p2 is pointer of pointer, p2 point to physical adress of p1; cout<< "a = "<
		      	

** Nombre en este caso. Sería un puntero a un puntero.