求大神指点。结构体全局变量与scanf解决办法

求大神指点。。。结构体全局变量与scanf
#include<stdio.h>
struct code
{
    int i;
    char s;
};
struct code *k;
main()
{
    scanf("%d",&k->i);
    scanf(" %c",&k->s);
    printf("%d,%c\n",k->i,k->s);
}
如题,上面这个程序一运行就出错,,,但是把struct code *k;弄到main里面又可以了。。
为什么啊???
求大神、、、
------解决方案--------------------
需要先分配空间才行:

struct code *k = (struct code*)malloc(sizeof(struct code));


引用:
#include<stdio.h>
struct code
{
    int i;
    char s;
};
struct code *k;
main()
{
    scanf("%d",&k->i);
    scanf(" %c",&k->s);
    printf("%d,%c\n",k->i,k->s);
}
如题,上面这个程序一运行就出错,,,但是把struct code *k;弄到main里面又可以了。。
为什么啊???
求大神、、、

------解决方案--------------------
引用:
Quote: 引用:

需要先分配空间才行:

struct code *k = (struct code*)malloc(sizeof(struct code));


Quote: 引用:

#include<stdio.h>
struct code
{
    int i;
    char s;
};
struct code *k;
main()
{
    scanf("%d",&k->i);
    scanf(" %c",&k->s);
    printf("%d,%c\n",k->i,k->s);
}
如题,上面这个程序一运行就出错,,,但是把struct code *k;弄到main里面又可以了。。
为什么啊???
求大神、、、
呃,,,定义在main里面就不用分配空间了吗?

当然也要分配空间,只是放到函数里面,可能是栈区,表面上程序没有崩溃,实际还是有问题,属于行为不可定义。