解释这个c语言程序的各行的功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解释这个c语言程序的各行的功能相关的知识,希望对你有一定的参考价值。
这是个用堆栈写的简单计算器
#include<stdio.h>
#define maxsize 100
int numstack[maxsize];
char opstack[maxsize];
int top1,top2,sum;
int main()
char str[maxsize];
int num1,i,j;
char ch;
while(top1=top2=0,gets(str)!=NULL)
sscanf(str,"%d",&num1);
numstack[top1++]=num1;
for(j=1;sscanf(str+j,"%c%d",&ch,&num1)!=-1;j+=2)
if(ch=='*')
numstack[--top1]*=num1;
else if(ch=='/')
numstack[--top1]/=num1;
else
opstack[top2++]=ch;
numstack[top1++]=num1;
sum=numstack[0];
for(i=0;i<top2;i++)
if(opstack[i]=='+')
sum+=numstack[i+1];
else if(opstack[i]=='-')
sum-=numstack[i+1];
printf("%s=%d\n",str,sum);
为啥我们不能在 C 语言中拥有两个主要功能?
【中文标题】为啥我们不能在 C 语言中拥有两个主要功能?【英文标题】:Why can't we have two main functions in C language?为什么我们不能在 C 语言中拥有两个主要功能? 【发布时间】:2013-10-09 13:01:00 【问题描述】:谁能解释一下内部发生了什么,除了main
是起点,我们不能有两个起点。
int main()
int main()
return 0;
return 0;
【问题讨论】:
我不明白你在问什么。你能澄清一下吗? 嵌套函数不是 C 的一部分。有一个 GCC 扩展。你问的是这个吗? 【参考方案1】:这不是合法的 C 代码 - 在 C 中,函数不能在另一个内部定义。
您不能这样做没有根本原因,但是实现这样的函数要么使激活记录布局复杂化,并且会降低效率(因为像闭包这样的考虑),要么会引入内存的潜力错误(如果你返回一个指向另一个函数内部的函数的指针,而内部函数引用外部函数中的数据,会发生什么?)为了简单和高效,C 只是不支持这一点。
希望这会有所帮助!
【讨论】:
s/declared/defined/ 你可以在函数definition中declare一个函数;你不能嵌套定义(尽管 gcc 支持它作为扩展)。【参考方案2】:标准 C 不允许在另一个函数中定义一个函数。一些编译器支持将此作为扩展名,但名称必须不同,否则按名称调用函数会模棱两可。
main
是程序的入口点。根据定义,一个程序只有一个入口点:它是在程序启动时(经过一些初始化)执行的函数,并且在该函数返回时(经过一些清理之后)程序退出。
【讨论】:
【参考方案3】:因为程序必须有一个起点。命名为“main”的函数是 C 中的默认起点。这就是 C 保留“main”作为名称的原因,您不能拥有另一个名为“main”的函数。
【讨论】:
以上是关于解释这个c语言程序的各行的功能的主要内容,如果未能解决你的问题,请参考以下文章