使用Struct和指针的程序中的不确定性(C语言程序)

Fil*_*tto 0 c struct pointers

考虑以下程序:

#include <stdio.h>
#include <stdlib.h>

int main()
{

typedef struct WFC_STRUCT {
int a;
int b;
} WFC_STRUCT;

WFC_STRUCT *ptr = (WFC_STRUCT*) NULL;

ptr->a=10;


return(0);

}
Run Code Online (Sandbox Code Playgroud)

我想了解教学中发生的事情:

WFC_STRUCT *ptr = (WFC_STRUCT*) NULL;
Run Code Online (Sandbox Code Playgroud)

为什么该计划正在破产?在什么情况下使用上面的说明?

P.P*_*.P. 6

虽然在这一行投

WFC_STRUCT *ptr = (WFC_STRUCT*) NULL;
Run Code Online (Sandbox Code Playgroud)

没用,实际问题在下一行:

ptr->a=10; /* This is equivalent to: (*ptr).a=10; */
Run Code Online (Sandbox Code Playgroud)

在哪里,你取消引用一个NULL指针.这是未定义的行为.基本上,ptr应该指向有效/可写的内存位置.但是在你的代码中,它不是.