上面和下面代码一样,只是下面的malloc函数被注释掉了,可是为什么不在堆区申请空间结构体指针就无法使用呢,求解
指针声明后是没有存储空间的 需要给分配出来
供参考,说明见注释:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int a;
double b;
char c[30];
}Try;
int main()
{
Try* x, * y; //定义两个结构体指针变量
Try X; //定义了结构体变量
x = (Try*)malloc(sizeof(Try)); //给结构体指针变量 x 分配空间
x->a = 200; //然后赋值 输出
x->b = 6.2830;
strcpy(x->c, "Hello");
printf("%s %d %f\n\n", x->c, x->a, x->b);
X.a = 100; //结构体变量 X 已分配空间,所以可以直接赋值, 输出
X.b = 3.1415;
strcpy(X.c, "world!");
printf("%s %d %f\n\n", X.c, X.a, X.b);
y = &X; //将指针 y 指向结构体变量 X 所在空间
printf("%s %d %f\n\n", y->c, y->a, y->b); // 输出
y = x; //将指针 y 指向结构体指针变量 x 申请的空间
printf("%s %d %f\n\n", y->c, y->a, y->b); // 输出
return 0;
}