小白请教一下代码错误

m0_46196884 2020-03-07 05:13:51
我的代码,编译没报错,但运行就失败,自查看不出来哪有问题,请求路过的大佬指点指点。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define stu struct Stu //静态链表 struct Stu { int xh; char name[128]; int Cnsoe; struct Stu *next; }; void ChainTableJc(struct Stu* p) { for(; p !=NULL; p++){ p->next = p; } } void FenshuoShuru(stu* p, int len){ int i; for(i=0; i<len; i++){ printf("请输入个人信息,学号、姓名、分数:"); scanf_s("%d %s %d", (p+i)->xh, (p+i)->name, (p+i)->Cnsoe); printf("第%d个学生的信息:学号:%d\n姓名:%s\n语文分数%d\n", &(p+i)->xh, &(p+i)->name, &(p+i)->Cnsoe); } } int main() { stu a, *head, *p; int lenth = sizeof(a); int nbr = 3; head = &a; head = (struct Stu* )calloc(nbr, lenth); p = head; ChainTableJc(p); free(p); FenshuoShuru(head, nbr); system("pause"); return 0; } 先在这里跪谢各位了。
...全文
51 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
院里有座山 2020-03-07
  • 打赏
  • 举报
回复
scanf_s("%d %s %d", (p+i)->xh, (p+i)->name, (p+i)->Cnsoe);
printf("第%d个学生的信息:学号:%d\n姓名:%s\n语文分数%d\n", &(p+i)->xh, &(p+i)->name, &(p+i)->Cnsoe);
主要是这里有问题,记住一个原则,凡是要修改值的调用,参数必须是指针
(p+i)->Cnsoe这里虽然p是指针,但是他指向了一个变量,所以还得取变量的地址才行。&(p+i)->Cnsoe
而在不修改实参的值的调用中,参数一般是变量,但是有时为了保持和相应函数的一致性,也可以使用一个常量指针。
&(p+i)->xh这里的取址操作明显不符合上面所说的原则

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧