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>
davy.ai
Añadir un
*
adicional dentro devar variables[26]
lo cambia avar* variables[26]
, lo cual significa que cada elemento en el array ahora es un puntero a una estructuravar
en lugar de una estructuravar
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.