resueltos punteros lenguaje funciones estructuras ejercicios ejemplo datos con apuntadores anidadas c

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