lenguaje - punteros en c
¿Es posible inicializar una estructura constructiva sin usar una función? (4)
Tengo una estructura bastante simple en algún código C que simplemente contiene algunos punteros y me gustaría inicializarla estáticamente si es posible. ¿Puedo y, si es así, cómo?
Puede, si los punteros apuntan a objetos globales:
// In global scope
int x, y;
const struct {int *px, *py; } s = {&x, &y};
const struct mytype foo = {&var1, &var2};
Una construcción solo se puede inicializar estáticamente.
Pero si hay alguna struct
como la siguiente:
struct Foo
{
const int a;
int b;
};
y queremos crear dinámicamente el puntero a la struct
usando malloc
, entonces podemos jugar el truco:
struct Foo foo = { 10, 20 };
char *ptr = (char*)malloc(sizeof(struct Foo));
memcpy(ptr, &foo, sizeof(foo));
struct Foo *pfoo = (struct Foo*)ptr;
esto es muy útil especialmente cuando alguna función necesita devolver el puntero a struct Foo