C++中的引用某种程度上,可以用C的指针替代。
# include <stdio.h>
# define M 100
typedef struct stack {
int top;
int key[M];
} stack;
int stackEmpty(stack s);
void push(stack & s, int x);
int pop(stack & s);
int main(void)
{
stack s;
s.top = 0;
/* 测试代码 */
push(s, 2);
push(s, 3);
printf("pop - %d\n", pop(s));
printf("stackEmpty - %d", stackEmpty(s));
}
int stackEmpty(stack s)
{
if(s.top == 0) {
return 1;
} else {
return 0;
}
}
void push(stack & s, int x)
{
s.top += 1;
s.key[s.top] = x;
}
int pop(stack & s)
{
if(s.top == 0) {
return -1;
} else {
s.top--;
return s.key[s.top + 1];
}
}
注意:全局变量传递参数的时候就不要传递了。
全局变量可以一直保存变量的值,不会因某个函数的结束而销毁,并且不用作为参数传递给函数。
# include <stdio.h>
# define M 100
typedef struct stack {
int top;
int key[M];
} stack;
stack s;
int stackEmpty(void);
void push(int x);
int pop(void);
int main(void)
{
s.top = 0;
/* 测试代码 */
push(2);
push(3);
printf("pop - %d\n", pop());
printf("stackEmpty - %d", stackEmpty());
}
int stackEmpty(void)
{
if(s.top == 0) {
return 1;
} else {
return 0;
}
}
void push(int x)
{
s.top += 1;
s.key[s.top] = x;
}
int pop(void)
{
if(s.top == 0) {
return -1;
} else {
s.top--;
return s.key[s.top + 1];
}
}