在函数中的堆栈指针会是形式参数吗?

时间:2015-02-28 05:57:52

标签: c++ c stack

    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h>

    using namespace std;

struct node

{

  int data;

  struct node *next;

};



struct stack

{

node *head;

};

void push(struct stack *stack1,int data)
{

   struct node *new_node= new node;

   new_node->data=data;

   if(stack1->head!=NULL)

   new_node->next=stack1->head;

   else

    new_node->next=NULL;

    stack1->head=new_node;

 }


void pop(struct stack *stack1)

{  

  node *temp= new node;

  if(stack1->head==NULL)

   cout<<"EMPTY"<<endl;

   else

   {

     temp=stack1->head;

     stack1->head=(stack1->head)->next;

     int t;

     t=temp->data;

     free(temp);

     cout<<t<<" ";

   }

}



void show(struct stack *stack1)

{

  node *new_node=new node;

  new_node=stack1->head;

   if(stack1->head==NULL)

  {

    cout<<"EMPTY"<<endl;

    return;

  }

   while(new_node!=NULL)

  {

     cout<<new_node->data<<" ";

     new_node=new_node->next;

  }

}



void peek(struct stack *stack1)

{

   if(stack1->head==NULL)

   cout<<"EMPTY";

   else

   cout<<stack1->head->data<<" ";

}





int main()

{

  int temp,temp2;

  struct stack *stack1=new stack;

  stack1->head=NULL;

  while(1)

  { 

     cin>>temp;

     switch(temp) 

   {

     case 0: exit(0);



     case 1: cin>>temp2;

             cout<<endl;

             push(stack1,temp2);

             break;



     case 2: pop(stack1);

             cout<<endl;

             break;



     case 3: peek(stack1);

             cout<<endl;

             break;



     case 4: show(stack1);

             cout<<endl;

             break;

   }

  }

  return 0;

 }       

1 个答案:

答案 0 :(得分:0)

来自C ++标准

  

1.3.14 [defns.parameter]

     

参数形式参数   形式参数

     

声明为a的一部分的对象或引用   函数声明或定义或在函数的catch子句中   异常处理程序,用于在函数入口处获取值或   处理程序

来自C标准

  

3.16 1参数   形式参数形式参数(不建议使用)

     

对象声明为函数声明或定义的一部分   获取函数入口的值或者来自的函数   以逗号分隔的列表,紧跟在括号后面   函数式宏定义中的宏名称

例如在这个函数声明中

void push(struct stack *stack1,int data);

stack1data是形式参数。它们在进入函数时需要值(参数)。 请注意,因为stack1被声明为指向struct stack的指针,所以指针指向的对象的任何更改都将在退出函数后保留在对象中。