fat *pfat declares pfat as a pointer to a fat. Note that it DOES NOT create anything for it to point to, so if this is really what you're doing without any intermediate code (that creates the memory structures) then it will compile but you have a memory corruption, because pfat itself doesn't exist, therefore pfat->dir_array is meaningless, as is pfat->dir_array->root_dir. So what these two lines of code will do is to write a zero to some random byte of memory, the effects of which will be determined by what that memory is subsequently used for.