局部变量通常定义在程序块(函数)的开头,其作用域在程序块(函数)内部,程序块外部不能访问局部变量。局部变量默认的存储类型是auto,它在进入声明该变量的程序块时被建立,在该程序块活动时存在,退出该程序块时撤销。函数内的局部变量可以申明为static类型,在退出该函数时,静态局部变量仍然存在,可以保存该变量的值用于下一次函数调用;注意静态变量只初始化一次。下面通过getop()函数的例子来说明。
编写函数int getop(char s[ ]) ,实现四则运算字符串的读取,字符读取使用getchar()函数。读到操作符,返回该符号;读到操作数返回常量NUMBER;s记录读到的字符串。考察输入字符串“12.34+\n”,依次读取数字字符(含小数点)'1', '2', '.', '3', '4',当读入'+'可以判断操作数读取完成,返回NUMBER;然而多读入了字符'+',需要把它返回输入流(存在变量buf中),从而保证正确记录读入的操作数,即s[ ] = { " 12.34 "}。将多读入的字符返回输入流,可以用ungetch()函数实现;也可以在getop()函数中定义静态局部变量buf,来保存返回的字符。
#include<std