es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cambiando intencionalmente mi estructura para utilizar “‘->'” en lugar de “‘.'”.

Al agregar un * extra dentro de var variables[26];, puedo evitar mezclar . y -> y usar el mismo operador -> en todos los códigos. Mi compañero de clase sugirió que podría estar desperdiciando memoria extra, pero esto suavizó mi experiencia de codificación ya que cometo menos errores.

¿Se considera esto una mala práctica o aceptable?.

Versión original

#include <stdio.h>

struct var {
   int ** num;
   int y;
   int x;
   int count;
};
typedef struct var var;

struct prog
{
   var variables[26];  <===================================ANTES DE CAMBIO
};

typedef struct prog prog;

int main()
{
   prog *p = calloc(1,sizeof(prog));

   //p->variables[0] = calloc(1, sizeof(var));
   p->variables[0].y=1;   <========================= ANTES DE CAMBIO, USANDO '.' para acceder a y

return 0;
}

Versión cambiada
“`
#include <stdio.h>

struct var {
int ** num;
int y;
int x;
int count;
};
typedef struct var var;

struct prog
{
var* variables[26]; <===================================Agregado * después de var
};

typedef struct prog prog;

int main()
{
prog *p = calloc(1,sizeof(prog));

//p->variables[0] = calloc(1, sizeof(var));
p->variables[0]->y=1; <=========================== Ahora se puede usar '->' en lugar de '.'

return 0;
}
“`</stdio.h></stdio.h>

Tags:  ,

Answer

  1. Avatar for davy.ai

    Añadir un * adicional dentro de var variables[26] lo cambia a var* variables[26], lo cual significa que cada elemento en el array ahora es un puntero a una estructura var en lugar de una estructura var en sí misma. Esto permite el uso del operador -> en lugar del operador . para acceder a los elementos de la estructura, lo cual puede resultar en una experiencia de codificación más fluida y menos errores.

    Sin embargo, esto también significa que cada elemento ahora requiere una asignación de memoria separada, lo cual puede resultar en un uso adicional de memoria. Si esto se considera una mala práctica o aceptable depende de las necesidades y restricciones específicas del proyecto. Es importante considerar cuidadosamente los compromisos entre el uso de memoria y la facilidad de uso antes de realizar este cambio.

Comments are closed.