C 在while循环中创建结构指针
我刚刚意识到,在while循环中,当我创建一个结构的指针时,当循环结束时,指针似乎没有定义。我不确定是否存在这样一种情况,即在中创建指针,而在它之外不能使用循环。 以下是我代码的一部分:C 在while循环中创建结构指针,c,pointers,C,Pointers,我刚刚意识到,在while循环中,当我创建一个结构的指针时,当循环结束时,指针似乎没有定义。我不确定是否存在这样一种情况,即在中创建指针,而在它之外不能使用循环。 以下是我代码的一部分: if('D'==Status) //depature { while(Top(T)->CarLicense != CarLin) { struct CarNode * tmp; tmp = Top(S); Push(TopAndPop(S), T);
if('D'==Status) //depature
{
while(Top(T)->CarLicense != CarLin) {
struct CarNode * tmp;
tmp = Top(S);
Push(TopAndPop(S), T);
tmp->Movement++;
}
printf("Moved %d, bye!\n",tmp->Movement);
DisposeCar(TopAndPop(T));
while(!(IsEmpty(T))) {
struct CarNode * tmp2;
tmp2 = Top(T);
Push(TopAndPop(T),S);
}
}
在这里,在printfMoved%d中,再见\n、 tmp->移动;,tmp似乎没有定义 因为tmp是在while块中声明和定义的,所以当循环完成时,它将超出范围。您需要在循环上方的行中声明它,这样它在到达printf时仍然可见。那么,我们可以说while循环中声明的任何变量只存在于循环中吗?为了安全起见,在任何{}子块中,是的。。。如果您只是声明了自动变量而没有初始化它们,它们可能会看到以前的值,但通常它只是垃圾,可能会导致seg错误等。完全基本的C可能重复:如果您有一个构造,如{int x;…},则不能在大括号外使用x。在你开始学习指针之前,你必须意识到这一点。