C语言结构体、变量问题

#include
typedef struct user{
char *name; //玩家用户名
double score; //游戏所用时间
}User;

User *user;

void login() //输入用户名
{
char a[20],*p=a;

printf("please input your ID:\n");
gets(p);
user->name=p;
return ;

}

int main()
{

login();
printf("%s",user->name);
return 0;

}

为什么程序运行不了呢?

5个回答

局部变量在函数运行完会被销毁
建议给指针开辟空间 或者用全局变量

User * user ,这个user是指向User类型的指针,你这个指针为空,并没有指向一个结构体 , 去掉*试一下

User *user;改成User user;后面使用name的时候将箭头改成点,user.name

你定义的数组是在函数里面,函数执行结束,函数里面的数据就会被回收,你的name 指向了无效的地址了

再加上,你什么时候给它分配内存了。哪里来的对象。只是定义了指针。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!