编c语言闹鬼了!三个printf连续输出同一变量 ,结果却不一样!!

来源:百度知道 编辑:UC知道 时间:2024/09/27 15:18:23
printf("%d\n",last->xvhao);
printf("%d\n",last->xvhao);
printf("%d\n",last->xvhao);
这是我在程序中连续输出的“last->xvhao”,结果只有第一个正确,后两个值变了!但后两个值是相等的,以我现在的知识,这种现象是无法理解的!!清高人帮忙啊
程序很复杂啊,三百多行呢,如果没有附初值,第一个为什么正确呢,那也不应该输出不一样啊,我把部分代码贴出来

}
int main()
{
int xuanxiang=0;
geshou *a=(geshou*)malloc((sizeof(geshou))),*last;

a->xvhao=0;last=a;a->next=NULL;
printf(" while(5)
{
printf("请选择服务项:");
scanf("%d",&xuanxiang);
if(xuanxiang>8||xuanxiang<0)
printf("无效选项,请重新输入!\n");
switch(xuanxiang)
{
case 1:
printf("%d",last->xvhao);
last=newput(last);

break;
case 2:
last=shanchu(a,last); break;
case 3:
pingfen(a);break;
case 4:
yuanshi(a,last);break;
case 5:
defen(a);
paiming1(a,last);
zuizhongpaiming(a,last);brea

你不把代码发上来别人不知到,至少发这个函数的吧 ,
多数问题是堆栈变量被覆盖了吧
--
你这个函数paimingxianshi返回的东西部分指向了堆栈上的东西,被printf覆盖了,所以第二次调用时就出错了,大概是这样吧

LZ把代码发给我,我帮你调试吧。。大家随便交流下
三百行的代码算短的。。

百度HI传文件
或者发到我的邮箱 gaoluo888@163.com

可能是你没有给这个变量赋初值。

贴代码,

能把程序贴出来吗?

肯定有其它问题的,,发过来看看?