2023-03-30 野指针的问题

发布时间 2023-03-30 19:56:49作者: 正方形的被子

 

 在顺序栈的取栈顶操作时,想利用指针来进行值的传输,最后却输出不出来

 1 bool GetTop(SqStack S,int *e)//读栈顶元素
 2 {
 3     if(S->top==-1)
 4     {
 5         return false;
 6     }
 7     else
 8     {
 9         *e=S->data[S->top];
10         return true;
11     }
12 }
1     int *e;
2     GetTop(S,e);
3     printf("%d",*e);
4     return 0;

这便是野指针的错误,因为指针未进行初始化,指向了一个未知变量,存储了这个未知变量的地址,结果也是不可知的

所以向函数中传入的也是一个未知的地址

解决方法:进行指针的初始化

1     int *e;
2     int a=0;
3     e=&a;
4     GetTop(S,e);
5     printf("TOP: %d",*e);
6     return 0;