【发布时间】:2021-11-23 18:48:26
【问题描述】:
每当我尝试在 c 中使用以下代码时,for 循环在一次迭代后就会中断,我无法弄清楚究竟是为什么。如果不使用 for 循环,那么它工作正常,我做了测试。请帮忙。
#include<stdio.h>
#include<stdlib.h>
struct stack
{
int top;
int n;
char *arr;
};
void push(struct stack *ptr,char x);
int main(){
struct stack chs;
struct stack *ptr;
ptr = &chs;
ptr->top=-1;
printf("enter the size of stack: ");
scanf("%d",&ptr->n);
int size = ptr->n;
for(int i=0 ; i < size ; i++){
printf("test iteration ");
push(ptr,'a');
}
return 0;
}
void push(struct stack *ptr,char x){
if(ptr->top >= (ptr->n-1)){
printf("\nstack overflow\n");
return;
}
else{
ptr->top = (ptr->top) + 1;
ptr->arr[(ptr->top)] = x;
}
}
【问题讨论】:
-
结构的
char *arr元素未初始化,因此ptr->arr[(ptr->top)]是未定义的引用。那时的行为是未定义的。
标签: c for-loop data-structures stack structure