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;
}
La diferencia es que el primero manda la dirección de var y el segundo su contenido
Suerte!
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?
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!
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.
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.
cout << &var <<"\t| " << var << "\t|" << comentario << "\n";
Saludos
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.
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
El tamaño depende de la arquitectura, no siempre va a ser 4 bytes.
Saludos
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 :-[
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