s[i]=='-') i++; for(var=0;isdigit(s[i]);i++) var=10*var+(s[i]-'0'); if(s[i]=='.') i++; for(p=1;isdigit(s[i]);i++) { var=10*var+(s[i]-'0'); p*=10; } return sign*var/p; }
4.3 外部变量
C语言程序可以看成是由一系列外部变量组成的,它们可能是函数也可能是变量。由于C语言中函数内部不能定义函数,所以所有的函数都是外部的,外部变量定义在函数外部,可以让多个函数调用使用。
正如前面提过,外部变量可以作为函数之间通信的一种方式,但是不要过份依赖外部变量,这样程序变得危险。这一部分通过一个堆栈实现简单的算术运算来说明外部变量的使用。
计算器计算采用逆波兰式:
(1-2)*(4+5)写成逆波兰式为:1 2 – 4 5 + *
所以使用栈来实现这一功能最合适,而栈的两个基本操作出栈与入栈和栈的定义则写成外部变量的形式。
下面先定义一栈,固定分配
#include<stdio.h> #define BUFSIZE 100 double stackbuf[BUFSIZE]; int p=-1;/*栈顶位置*/ /*进栈操作*/ void push(double