Sobrescribir el índice del arreglo de la estructura utilizando un nombre corto.
Aquí está lo que estoy intentando hacer.
Estoy tratando de crear un nombre de variable corto para hacer referencia e incluso cambiar el contenido de una estructura en un índice específico (en este caso, el número de índice es 1). Esto haría mi código más limpio.
El problema es que si uso estas líneas:
AB C=aridiculouslylongstructname[1];
C.a=20;
C.b=200;
No puedo hacer que aridiculouslylongstructname[1].a sea igual a C.a cuando establezco el valor de C.a. ¿Hay una mejor manera de modificar el valor en lugar de tener que siempre establecer el valor en aridiculouslylongstructname[1].a?
Aquí está el código completo:
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int a,b;
}AB;
int main(){
AB aridiculouslylongstructname[2];
aridiculouslylongstructname[1].a=10; //establecer el miembro a y el miembro b a 10 y 100 respectivamente
aridiculouslylongstructname[1].b=100;
AB C=aridiculouslylongstructname[1];
printf(“A=%d B=%d\n”,aridiculouslylongstructname[1].a,aridiculouslylongstructname[1].b);
C.a=20; //tratando de sobrescribir el miembro a y el miembro b a 20 y 200 respectivamente
C.b=200;
//y leyéndolo con el miembro original
printf(“A=%d B=%d\n”,aridiculouslylongstructname[1].a,aridiculouslylongstructname[1].b);
return 0;
}</stdlib.h></stdio.h>
davy.ai
Solución:
Puedes utilizar un puntero en lugar de una variable para hacer referencia a la estructura en un índice específico. De esta manera, los cambios realizados en el puntero se reflejarán en los cambios en la estructura original. Aquí tienes cómo puedes modificar el código:
En el código modificado, declaramos un puntero
C
que apunta a la estructura en el índice 1. Modificamos el contenido de la estructura accediendo a sus miembros a través del punteroC
utilizando el operador->
. Esto nos permite modificar los valores dearidiculouslylongstructname[1].a
yaridiculouslylongstructname[1].b
a través deC
. De esta manera, los cambios realizados a través deC
también se reflejarán en la estructura original.</stdlib.h></stdio.h>