elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda punteros y referencias c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda punteros y referencias c++  (Leído 440 veces)
Mozzard

Desconectado Desconectado

Mensajes: 27


cout << "Text here" << endl;


Ver Perfil
Duda punteros y referencias c++
« 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;
}


En línea

Código:
Programalo... sin miedo...
ivancea96


Desconectado Desconectado

Mensajes: 3.411


ASMático


Ver Perfil WWW
Re: Duda punteros y referencias c++
« Respuesta #1 en: 23 Enero 2019, 21:03 pm »

Código
  1. refuncion(&pnum);

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
  1. int num = 5;
  2. int* pnum = &num;
  3. // ...


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.489



Ver Perfil
Re: Duda punteros y referencias c++
« Respuesta #2 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.
En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C] - Duda punteros
Programación C/C++
h0oke 2 1,536 Último mensaje 23 Mayo 2010, 02:19 am
por h0oke
Duda con punteros
Programación C/C++
cazagavilan 5 1,827 Último mensaje 14 Abril 2012, 05:47 am
por cazagavilan
Duda Punteros Dobles/Array de punteros
Programación C/C++
MisterJava 2 3,700 Último mensaje 30 Diciembre 2012, 20:19 pm
por MisterJava
Consulta sobre punteros y referencias.
Programación C/C++
anonimo12121 5 1,824 Último mensaje 27 Febrero 2013, 05:10 am
por 85
[Duda] Retorno de referencias.
Programación C/C++
Zodiak98 1 719 Último mensaje 30 Septiembre 2013, 20:20 pm
por eferion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines