Biorąc pod uwagę ten struct:Jak zainicjować wskaźnik do struct w C?
struct PipeShm
{
int init;
int flag;
sem_t *mutex;
char * ptr1;
char * ptr2;
int status1;
int status2;
int semaphoreFlag;
};
który działa prawidłowo:
static struct PipeShm myPipe = { .init = 0 , .flag = FALSE , .mutex = NULL ,
.ptr1 = NULL , .ptr2 = NULL , .status1 = -10 , .status2 = -10 ,
.semaphoreFlag = FALSE };
Ale kiedy deklarują static struct PipeShm * myPipe
, który nie działa, jestem przy założeniu, że będę musiał zainicjować z operatorem ->
, ale jak?
static struct PipeShm * myPipe = {.init = 0 , .flag = FALSE , .mutex = NULL ,
.ptr1 = NULL , .ptr2 = NULL , .status1 = -10 , .status2 = -10 ,
.semaphoreFlag = FALSE };
Czy możliwe jest zadeklarowanie wskaźnika do struktury i użycie z nim inicjalizacji?
trzeba przydzielić pamięci do wskaźnika tak, że można zrobić coś sensownego z nim. Wskaźnik sam w sobie wskazuje na losowy adres. Musisz upewnić się, że adres wskazany przez wskaźnik jest wystarczająco duży, aby pomieścić zawartość struktury. –
Nie rozumiem ... dlaczego potrzebujesz * wskaźnika *? –
Zobacz pytanie [tutaj] (http://stackoverflow.com/questions/2177391/allocating-memory-for-a-structure-in-c) Aby zadeklarować wskaźnik, musisz przydzielić pamięć, aby Twoje pytanie było takie samo rzecz. – rudolph9