在函数中使用时可以更改全局变量

时间:2019-11-12 17:28:35

标签: arrays stack reversing

我们可以通过在其他函数中使用它们来更改全局变量的值吗? 我有这组代码

#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。有人可以帮忙吗?

0 个答案:

没有答案