急!!!C语言的高手请进!!如何确定一个函数体
发布网友
发布时间:2023-06-27 17:36
我来回答
共5个回答
热心网友
时间:2024-11-25 07:42
我提供一个思路:
需要用到栈。把字符数组扫描一遍,遇到左括号‘(’或左大括号‘{’时就把它们压入栈中,遇到右括号‘)’或右大括号‘}’时看看栈顶元素是不是')'或者'}',若是则把栈顶元素弹出,继续扫描数组后面的元素;否则终止,可以断定不是函数。
同时还需要判断一点,就是其中有一个右括号‘)’后面的是左大括号‘{’,中间允许有空格,但不允许有别的字符。
如果数组扫描完了而且也满足第二点,就判定是函数。
我这方法只是单纯从语法括号上判定,仍有不妥,仅供参考。
热心网友
时间:2024-11-25 07:43
有声明 定义 类型 函数名 参数可有可无..
int max(int,int);
void main()
{
}
int max(int a,int b)
{
if(a>b)
return a;
else return b;
}
int 是函数的返回类型,
max 是函数名也是函数的地址 也就是类似于数组的首地址
参数就不用说了吧..
热心网友
时间:2024-11-25 07:43
没有好的办法,自己写正则判断吧!
或者学习一下编译原理,编译原理里面有介绍,比较复杂的说!
热心网友
时间:2024-11-25 07:44
编译原理,而且不同的语法规则都是不同的,有些是允许嵌套,有些是不允许的,光看一个是没什么大意思的。学习编译原理,语法、词法分析。
热心网友
时间:2024-11-25 07:45
参见《C程序设计语言》的附录,里面有C语言“函数”的文法,照着那个解析就可以了