C中的继承

use*_*431 4 c inheritance

我正在玩C中实现继承.我写了以下两个变体.方法1在运行程序时崩溃,但方法2工作正常.我在方法1中做错了什么?

方法1:

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

typedef struct base_class
{
    int a;
}Base;

typedef struct derived_class
{
    int b;
    Base *base_ptr;
}Derived;

int main(void){
    Derived *der_ptr;
    der_ptr = (Derived *)malloc(sizeof(Derived));
    der_ptr->b = 5;
    der_ptr->base_ptr->a=10;

    printf("%d %d",der_ptr->b,der_ptr->base_ptr->a);
}
Run Code Online (Sandbox Code Playgroud)

方法2:

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

typedef struct base_class
{
    int a;
}Base;

typedef struct derived_class
{
    int b;
    Base base_ptr;
}Derived;

int main(void){
    Derived *der_ptr;
    der_ptr = (Derived *)malloc(sizeof(Derived));
    der_ptr->b = 5;
    der_ptr->base_ptr.a=10;

    printf("%d %d",der_ptr->b,der_ptr->base_ptr.a);
}
Run Code Online (Sandbox Code Playgroud)

wal*_*lyk 5

方法1由于这行代码而崩溃:

der_ptr->base_ptr->a=10;
Run Code Online (Sandbox Code Playgroud)

问问自己:价值是der_ptr->base_ptr多少?