我无法理解某些指针的工作原理。我一直认为,当你创建一个指针变量 (p) 时,你不能尊重和分配 (*p = value),除非你为它分配了空间 (p = malloc(x)),或者将它设置为另一个变量的地址 (p = &a)
但是在这段代码中,第一个分配始终如一,而最后一个导致段错误:
typedef struct
{
int value;
} test_struct;
int main(void)
{
//This works
int* colin;
*colin = 5;
//This never works
test_struct* carter;
carter->value = 5;
}
当 colin 没有指向任何空闲内存时,为什么第一个工作?为什么第二个永远不起作用?
我是用 C 写的,但是有 C++ 知识的人也应该能够回答这个问题。
编辑:好的,我知道第一个也不应该工作,但为什么会这样。这就是我所追求的。