请大家帮我分析这个结构指针的C程序,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:40:16
main()
{
struct stu
{
int num;
char *name; /*我在这里用char name[],运行错误,指针不是可以当数组用啦。*/
char sex;
float score;
} *ps;
ps=(struct stu*)malloc(sizeof(struct stu));
ps->num=102; /*这是什么意思,不是指针指向吗,ps.name是错了,*/
ps->name="Zhang ping";
ps->sex='M';
ps->score=62.5;
printf("Number=%d\nName=%s\n",ps->num,ps->name); /*ps->num它不是表示一个地址吗,为什么不用*(ps->num)?*/
printf("Sex=%c\nScore=%f\n",ps->sex,ps->score);
free(ps); 这个释放内存去掉,好像也对。
}

main()
{
struct stu
{
int num;
char *name; /*char name[]你要用数组,要规定数组长度char name[10]。*/
char sex;
float score;
} *ps;
ps=(struct stu*)malloc(sizeof(struct stu));
ps->num=102; /*这个是指向结构的成员引用,指针特有,(*ps).num=102,这样才对,*/
ps->name="Zhang ping";
ps->sex='M';
ps->score=62.5;
printf("Number=%d\nName=%s\n",ps->num,ps->name); /*ps->num不是表示地址,是数据,ps才是地址,(*ps).num,也可以这样表示*/
printf("Sex=%c\nScore=%f\n",ps->sex,ps->score);
free(ps);//不释放内存,其实没关系,你程序停止了,内存自动释放。
}

num 是 num,是整型
name 是 name,是指针