求大神告知为什么这个运行会出错,说内存不可读

#include
#include
int main()
{
char*s;
scanf("%s",s);
char ret[56];
return 0;
}

这个s没分配内存,指向不明

指针不是字符串本身。,
字符串C语言的实现,是字符数组。
一个字符指针(如果指向字符串),通常只不过是字符串的,第一个字符的地址而已。
一个不知道指向哪里的指针,当然不可以作为字符串 ,传递给 scanf
因为 scanf需要的,是一个存储字符串的地方,也就是相当于字符数组的地方。