我正在玩C中实现继承.我写了以下两个变体.方法1在运行程序时崩溃,但方法2工作正常.我在方法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)
#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)
方法1由于这行代码而崩溃:
der_ptr->base_ptr->a=10;
Run Code Online (Sandbox Code Playgroud)
问问自己:价值是der_ptr->base_ptr多少?