Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

228
Vistas
¿Por qué querríamos hacer referencia a una dirección variable? ¿Cuáles son sus ventajas?

He intentado buscar en Google una respuesta sin suerte. Mi profesor de programación solo lo menciona como una posibilidad que puedes usar, pero no puedo ver los casos de uso, creo que entiendo cómo funciona, así que mi teoría es que es más rápido hacer referencia a &var que usar var. Si ese es el caso, ¿es solo para ese propósito? ¿Se me escapa algo? ¿Estoy completamente equivocado? EDITAR: Lo siento, quise decir: es más rápido hacer referencia a una variable usando su dirección que solo usando la variable

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Para dar otras referencias de software a las variables:

 double x0, y0; double x1, y1; double x2, y2; /* Convert polar coordinates to rectangular coordinates. This code needs two results from each call, but a function can only return one thing. And we do not want the function to set the same variables each time, so we cannot use fixed global variables. In each call, we pass the function pointers to two variables we want it to put the results in. */ ConvertPolarToRectangular(&x0, &y0, 3, .17); ConvertPolarToRectangular(&x1, &y1, 4, .23); ConvertPolarToRectangular(&x2, &y2, 5, -.03);

Para trabajar con datos cuando no sabemos cuánto necesitamos cuando compilamos el programa:

 // Get number of items needed. scanf("%d", &N); /* Allocate memory for records. This makes Records point to enough memory for N records (if the malloc succeeds). */ struct Record *Records = malloc(N * sizeof *Records);

Para crear listas vinculadas, árboles y otras estructuras de datos que se conectan entre sí:

 struct ListItem { struct ListItem *Next; int Data; } struct ListItem *FirstItem = malloc(sizeof *FirstItem); struct ListItem *SecondItem = malloc(sizeof *SecondItem); FirstItem->Next = SecondItem; SecondItem->Next = NULL; /* Now we can keep allocating memory for as many items as we need and keep linking them together into a list. When we want to delete one item, we can take it out of the chain without moving the other items in memory: */ FirstItem->Next = ThirdItem; free(SecondItem);
over 4 years ago · Santiago Trujillo Denunciar

0

Además del rendimiento, existe la posibilidad de cambiar la variable referenciada. Si se pasa una variable a una función como argumento, se copia el valor de la variable. Si la función cambia su argumento, la variable original no cambia. Sin embargo, si pasa la dirección de una variable, la función tiene la capacidad de cambiar el valor de la variable original. A veces eso es malo; a veces eso es genial. Si necesita esa habilidad, entonces esta es una característica crucial.

over 4 years ago · Santiago Trujillo Denunciar

0

Una razón común para tomar la dirección de una variable sería permitir que una variable definida en una función se cambie en otra.

En C, todos los parámetros de las funciones se pasan por valor. Entonces, si desea que una función cambie el valor de una variable definida en alguna otra función, debe pasar su dirección.

Por ejemplo:

 void increment(int *x) { *x = *x + 1; } int main() { int num = 4; increment(&num); printf("num=%d\n", num); }

Aquí, la dirección de num se pasa a la función de increment . Esta función puede desreferenciar este puntero para leer y escribir el valor almacenado en esa dirección. Este código generará "num = 5".

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda