栈的其中一个作用:
1. 函数的返回地址和参数
栈保存了一个函数调用时所需要的维护信息,可能和搭载另一个函数的栈一起返回函数的返回值(下面有一个例子)
#include <stdio.h>
#define N 5
int get_input(int number1, char opt, int number2);
int check_answer(int number1, char opt, int number2, int input);
void result();
int main()
{
int number1[N] = {36, 23, 47, 7, 19};
int number2[N] = {25, 8, 29, 16, 6};
char opt[N] = {'+', '-', '-', '+', '+'};
int is_right[N]; // 0:回答错误,1:回答正确
int input[N];
int i;
for(i = 0;i < 5;i++){
printf("第%d题:", i + 1);
input[i] = get_input(number1[i], opt[i], number2[i]);
is_right[i] = check_answer(number1[i], opt[i], number2[i], input[i]);
result();
}
return 0;
}
int get_input(int number1, char opt, int number2)
{
int input;
printf("%d %c %d = ", number1, opt, number2);
scanf("%d", &input);
return input;
}
int check_answer(int number1, char opt, int number2, int input)
{
int is_right = 0; // 0:回答错误,1:回答正确
if(opt == '+'){
if(input == (number1 + number2)){
is_right = 1;
}
}else{
if(input == (number1 - number2)){
is_right = 1;
}
}
return is_right;
}
void result(){
int nl;
if(nl==1){
printf("回答正确!\n");
}else if(nl==0){
printf("回答错误!\n");
}
}
void result()函数就会可能搭载这里代码里的其中一个函数的栈一起返回值,就有可能void result()这个函数“融在”它搭载同一个函数的栈中,即使void result()函数没有形参,但是调用它也能发挥作用的原因。
标签:opt,right,int,number2,用栈,例子,中共,number1,input From: https://www.cnblogs.com/cpu666/p/17093945.html