最近刚用vs2010,但发现他的调试有时候看不到变量的值,尤其有关堆内存的时候。
下面是一个很简单的链表,程序有点问题,但在vs调试的时候看不到变量的值,vc6没有问题
调试窗口都是这样:
head_A 0x00413450
请问这是什么问题?
#include<stdio.h>
#include<stdlib.h>
struct Unit
{
int coe;
int ind;
bool sign_end;
Unit *next;
};
void Establish(Unit *head_);
void Calculate_plus(Unit *head__A,Unit *head__B,Unit *head__C);
void Calculate_mult(Unit *head__A,Unit *head__B,Unit *head__D);
int main()
{
Unit *head_A,*head_B,*head_C,*head_D;
head_A=(Unit*)malloc(sizeof(Unit));
head_B=(Unit*)malloc(sizeof(Unit));
head_C=(Unit*)malloc(sizeof(Unit));
head_D=(Unit*)malloc(sizeof(Unit));
printf("请输入方程A:\n");
scanf("%d%d",&head_A->coe,&head_A->ind);
Establish(head_A);
printf("请输入方程B:\n");
scanf("%d%d",&head_B->coe,&head_B->ind);
Establish(head_B);
Calculate_plus(head_A,head_B,head_C);
//Calculate_mult(head_A,head_B,head_D);
getchar();
getchar();
return 0;
}
void Establish(Unit *head_)
{
Unit *p1,*p2;
p1=head_;
do
{
p2=(Unit*)malloc(sizeof(Unit));
scanf("%d%d",&p2->coe,&p2->ind);
p2->sign_end=false;
p1->next=p2;
p1=p2;
}while(p2->ind!=0);
p2=(Unit*)malloc(sizeof(Unit));
p2->sign_end=true;
p1->next=p2;
}
void Calculate_plus(Unit *head__A,Unit *head__B,Unit *head__C)
{
Unit *p_A,*p_B,*p_C,*p;
p_A=head__A;
p_B=head__B;
p_C=head__C;
do
{
if(p_A->ind==p_B->ind)
{
p_C->coe=p_A->coe+p_B->coe;
p_C->ind=p_A->ind;
p=(Unit*)malloc(sizeof(Unit));
p_C->next=p;
p_C=p;
}
p_B=p_B->next;
if(p_B->sign_end==true)
{
p_A=p_A->next;
p_B=head__B;
}
}while(p_A->sign_end!=true);
p_C=head__C;
while(p_C->sign_end!=true)
{
printf("%d %d\n",p_C->coe,p_C->ind);
p_C=p_C->next;
}
}
------解决方案--------------------------------------------------------
调试的时候 右键变量名 添加 监视 Add Watch