[?][C]Que diferencia hay en *-& en esta funcion pues eso

Iniciado por anonimo12121, 18 Febrero 2011, 21:38 PM

0 Miembros y 1 Visitante están viendo este tema.

anonimo12121

void view(int &var,char* comentario)... en esto me sale la memoria que es creo...
y
void view(int var,char* comentario)... me sale 0x... los mismo en los 2
Citar#include <iostream>
using namespace std;
void view(int &var,char* comentario){
     cout << &var <<"\t| " << var << "\t|" << comentario << "\n";
};
int main(int *argc,char *argv[]){
    int evento=555;
    int salida=999;
    cout << "Memoria" <<"\t\t|" << "Valor" << "\t|" << "comentarios\n";
    while(1){
             view(evento,"var para eventos");
             view(salida,"var comparacion con evento");
             cin >> evento;
             if(evento == salida) break;
    }
    cout << "salida del programa";
    cin.get();
    cin.get();
    return 0;
}
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

Garfield07

La diferencia es que el primero manda la dirección de var y el segundo su contenido

Suerte!


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

anonimo12121

Cita de: Sagrini en 18 Febrero 2011, 21:46 PM
La diferencia es que el primero manda la dirección de var y el segundo su contenido

Suerte!
en la segunda de donde saca 0x22FF44 por poner un ejemplo de las 2 variables . que manda la direccion de la variable de la funcion?
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

Garfield07

Cita de: Xafirot en 18 Febrero 2011, 21:48 PM
en la segunda de donde saca 0x22FF44 por poner un ejemplo de las 2 variables . que manda la direccion de la variable de la funcion?
No se te entiende nada...
Al usar & se manda la dirección de lo que pongas...
Por ejemplo

#include <stdio.h>

int main ()
{
int var = 1;
printf ("Var [0x%08x] vale %d", &var, var);

return 0;
}


Suerte!


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Littlehorse


Código (cpp) [Seleccionar]
void view(int &var,char* comentario)

En esta función, "var" es una referencia. Es decir, las referencias actúan "como si fuesen" un puntero pero no lo son.  Desde el punto de vista del programador, "var" no apunta a "evento" si no que es "evento".

La dirección de memoria y el contenido de "var" es la misma que la de "evento" u la de "salida" o sea cual sea la variable entero que le pases a la función.

Código (cpp) [Seleccionar]
void view(int var,char* comentario)

En este caso, lo que se espera es solo un entero por valor. Por lo tanto "var" va a tener una dirección de memoria distinta que "evento" u "salida" pero si el mismo valor, por lo menos al momento de la llamada.

Citarvoid view(int &var,char* comentario)... en esto me sale la memoria que es creo...
y
void view(int var,char* comentario)... me sale 0x... los mismo en los 2

Si en ambas llamadas te salen direcciones de memoria es porque en la función vos estas buscando imprimir la dirección de memoria de "var" y luego su valor.

Código (cpp) [Seleccionar]
cout << &var <<"\t| " << var << "\t|" << comentario << "\n";

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

anonimo12121

OK entendido. y unda duda más ya que estamos XDD que consume más un int* o un int? osea punteros o variables.

PD: si es largo de explicar da = ya busco informacion...
gracias por compartir la informacion.
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

Garfield07

Cita de: Xafirot en 19 Febrero 2011, 00:39 AM
OK entendido. y unda duda más ya que estamos XDD que consume más un int* o un int? osea punteros o variables.

PD: si es largo de explicar da = ya busco informacion...
gracias por compartir la informacion.

Pues exactamente lo mismo :P 4 y 4 bytes xD


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Littlehorse

El tamaño depende de la arquitectura, no siempre va a ser 4 bytes.

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Garfield07

Mmm, pero siempre van a ser los mismos. X es un puntero a un int. X es un int. Los punteros a una variable y la variable ocupan lo mismo, no? Corrígeme si me equivoco :P
_____________________________
Modf: Es pura coincidencia, toda clase de puntero ocupa cuatro bytes, que son 0xXXYYZZAA. Fallo mío.
En el caso del int y int * da la casualidad de que son iguales, pero no en los demás  :-[


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Littlehorse

Cita de: Sagrini en 19 Febrero 2011, 01:27 AM
Mmm, pero siempre van a ser los mismos. X es un puntero a un int. X es un int. Los punteros a una variable y la variable ocupan lo mismo, no? Corrígeme si me equivoco :P
_____________________________
Modf: Es pura coincidencia, toda clase de puntero ocupa cuatro bytes, que son 0xXXYYZZAA. Fallo mío.
En el caso del int y int * da la casualidad de que son iguales, pero no en los demás  :-[

Los punteros ocupan lo necesario para almacenar direcciones de memoria, y no, no necesariamente tienen que tener el mismo tamaño del tipo de variable a la que pueden apuntar. De hecho, no podría ser nunca de esa manera, ¿Imaginas un puntero a char de 1 byte? no tendría la capacidad para almacenar la dirección de memoria correctamente.

El tamaño ya sea de los punteros u de cualquier otro elemento depende de la arquitectura y del modelo de datos utilizado. No es lo mismo un puntero en una arquitectura x86 que en una x64.

Para mas información:
http://en.wikipedia.org/wiki/64-bit

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.