温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何理解ANSI和K&R两种函数定义风格

发布时间:2021-10-14 14:17:08 来源:亿速云 阅读:170 作者:柒染 栏目:编程语言

这篇文章将为大家详细讲解有关如何理解ANSI和K&R两种函数定义风格,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

在C语言的函数定义上,我们通常都是用的函数定义方式为ANSI-C的函数定义方式。但是在C语言之父创立C语言之时,函数的定义形式并非现在我们所见到的形式。下面的代码显示了这样的差别,注意观察二者在声明函数体签名上的差别。

#include <stdio.h>
#include <stdlib.h>
/*K&R Standard==============start===================*/
const char* originalFunc();
/*K&R Standard---------------end--------------------*/
/*ANSI Standard=============start===================*/
const char* ANSIFunc(char param1, char* param2);
/*You also can define the function like below.
* const char* ANSIFunc(char ,char*); */
/*ANSI Standard--------------end--------------------*/
int main() {
     printf("const char* originalFunc(param1,param2):%s\n", originalFunc('a',
          "word"));
     printf("const char* ANSIFunc(param1,param2):%s\n", ANSIFunc('a', "word"));
     return EXIT_SUCCESS;
}
/*K&R Standard==============start===================*/
const char* originalFunc(param1, param2)
char param1;char* param2; {
     printf("param1:%c\nparam2:%s\n", param1, param2);
     return "originalFunc";
}
/*K&R Standard---------------end--------------------*/
/*ANSI Standard=============start===================*/
const char* ANSIFunc(char param1, char* param2) {
     printf("param1:%c\nparam2:%s\n", param1, param2);
     return "ANSIFunc";
}
/*ANSI Standard--------------end--------------------*/

K&R的风格与ANSI-C的比,K&R风格又称为identifier-list,而另一种风格则又称为declarator,其中originalFunc(param1, param2) 即为这个declarator。事实上两种风格在ANSI 99 标准中(6.9.1节)都有定义,只不过我们更推崇declarator的方式。因为它将对参数进行强制类型转换,而标识符列表的方式则没有进行这项操作。

关于如何理解ANSI和K&R两种函数定义风格就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI