Dereferencing pointers without pointing them at a variable
- by Miguel
I'm having trouble understanding how some pointers work. I always thought that when you created a pointer variable (p), you couldn't deference and assign (*p = value) unless you either malloc'd space for it (p = malloc(x)), or set it to the address of another variable (p = &a)
However in this code, the first assignment works consistently, while the last one causes a segfault:
typedef struct
{
int value;
} test_struct;
int main(void)
{
//This works
int* colin;
*colin = 5;
//This never works
test_struct* carter;
carter->value = 5;
}
Why does the first one work when colin isn't pointing at any spare memory? And why does the 2nd never work?
I'm writing this in C, but people with C++ knowledge should be able to answer this as well.