求教大佬,关于C语言结构体指针的问题

我定义了一个结构体数组,然后题目要求按选择法把结构体内的数据从小到大排序。选择排序我是定义了一个函数,函数的参数是两个结构体指针(struct Stu_Score *p,struct Stu_Score *q),函数体内定义了一个中间指针变量struct Stu_Score *temp,在交换的时候就是用中间指针变量对p和q交换,结果这样并没有出现语法错误,但是在运行的时候显示已停止工作。后来我把指针变量还为普通的结构体变量,就是把*temp改成了temp(相应的调用时的->改成了.),结果这样运行就没问题了,请教大佬这是为什么

2个回答

很经典的问题 ,画个内存四区图就知道了

qq_35156130
qq_35156130 懂了,忘了给指针变量temp分配空间(ಥ_ಥ)
大约 3 年之前 回复
 void fun(int *p,int *q)
{
    int nTemp;
    nTemp = *p;
    *p = *q;
    *q = nTemp;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问