我们可以通过在其他函数中使用它们来更改全局变量的值吗? 我有这组代码
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 7
int st[MAX];
int top=-1;
void push(int st[],int val);
void display(int st[]);
void main(){
int a[11],n,i;
printf("Enter the maximum number of elements\n");
scanf("%d",&n);
printf("Enter the elements in the array\n");
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=n-1;i<=0;i--){
push(st,a[i]);
}
display(st);
}
void push(int st[],int val){
if(top==MAX-1)
printf("STACK OVERFLOW");
else{
top++;
st[top]=val;
}
}
void display(int st[]){
if(top==-1){
printf("STACK IS EMPTY");
}
else{
int i=0;
while(i<=top){
printf("%d\t",st[i]);
i++;
}
}
}
在这里,我基本上是在尝试使用堆栈来反转数组。我想push函数是正确的,但是当我运行代码时,它告诉我堆栈是空的(仅当top == -1时才可能,这意味着全局变量top的值未更改)。但是我已经调用了n次,将top的值增加到n-1。有人可以帮忙吗?