Dada esta estructura:¿Cómo inicializar un puntero a una estructura en C?
struct PipeShm
{
int init;
int flag;
sem_t *mutex;
char * ptr1;
char * ptr2;
int status1;
int status2;
int semaphoreFlag;
};
Eso funciona bien:
static struct PipeShm myPipe = { .init = 0 , .flag = FALSE , .mutex = NULL ,
.ptr1 = NULL , .ptr2 = NULL , .status1 = -10 , .status2 = -10 ,
.semaphoreFlag = FALSE };
Pero cuando declaro static struct PipeShm * myPipe
, eso no funciona, estoy suponiendo que iba a necesitar para inicializar con el operador ->
, pero ¿cómo?
static struct PipeShm * myPipe = {.init = 0 , .flag = FALSE , .mutex = NULL ,
.ptr1 = NULL , .ptr2 = NULL , .status1 = -10 , .status2 = -10 ,
.semaphoreFlag = FALSE };
¿Es posible declarar un puntero a una estructura y usar la inicialización con él?
es necesario asignar memoria para el puntero de modo que se puede hacer algo significativo con ella. Un puntero por sí solo apunta a una dirección aleatoria. Debe asegurarse de que la dirección apuntada por el puntero sea lo suficientemente grande como para contener los contenidos de la estructura. –
No lo entiendo ... ¿por qué necesitas un * puntero *? –
Ver la pregunta [aquí] (http://stackoverflow.com/questions/2177391/allocating-memory-for-a-structure-in-c) Para declarar un puntero, necesita asignar memoria para que, básicamente, se pregunte lo mismo cosa. – rudolph9