这个程序有什么有关问题,C语言从命令行读取并打印字符串

这个程序有什么问题,C语言从命令行读取并打印字符串
程序如下:
#include "stdio.h"
#include "string.h"


void main()
{
char *s;
gets(s);
puts(s);
}


此程序运行有错误;
但如果我把char *s 更改成char s[80]这样的形式,就可以正确运行,这是为什么?
C

------解决方案--------------------
这样就没问题了

char* a  = (char*)malloc(80);
gets(a);
puts(a);
free(a);
return 0;