Título: Duda punteros y referencias c++ Publicado por: Mozzard en 23 Enero 2019, 20:50 pm Es una cosa sencilla que queria probar para testearlo y jugar un poco con ello para tener soltura, y no me compila lol, alguien sabe por que?
Código: #include "pch.h" #include <iostream> using namespace std; void refuncion(int&); int main() { int* pnum; *pnum = 5; refuncion(&pnum); } refuncion(int& ref) { cout << "El numero es: " << ref << endl; } Título: Re: Duda punteros y referencias c++ Publicado por: ivancea96 en 23 Enero 2019, 21:03 pm Código
Con eso estás pasando como parámetro la dirección del puntero, es decir, un int** (dirección de una dirección). Sin embargo, en la función esperas un int&. El uso de "&" antes de una variable es diferente a su utilidad después de un tipo. Para que esto compilase, deberías pasarle a la función "*pnum" (es decir, un int). "int&" es una referencia a un int, es decir, lo que le hagas al parámetro "ref" será como hacérselo a "*pnum". Aunque este código compile, habrá un error, y es que al hacer "*pnum = 5" estás diciendo que "la variable a la que apunta "pnum" se establecerá a 5. El problema, es que "pnum" no apunta a ninguna variable. Puedes hacer este cambio: Código
Título: Re: Duda punteros y referencias c++ Publicado por: MAFUS en 23 Enero 2019, 22:41 pm Lo que viene siendo ...
Premisa: una variable local sin inicializar puede tener cualquier valor. Cuando generas el puntero local tiene un valor desconocido, pero al fin y al cabo un valor (por lo que apuntará a algún lugar desconocido). Premisa: tocar una dirección de memoria fuera del marco que le ha dado el sistema operativo a tu programa hará que este lo detenga por seguridad. Al dar un valor a la dirección de memoria apuntada por tu puntero estás intentando modificar ve a saber dónde que seguramente no te esté permitido. Por tanto el S.O. detiene tu programa. Fin. |