十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章将为大家详细讲解有关如何理解ANSI和K&R两种函数定义风格,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联专注于企业网络营销推广、网站重做改版、龙口网站定制设计、自适应品牌网站建设、H5建站、购物商城网站建设、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为龙口等各大城市提供网站开发制作服务。
在C语言的函数定义上,我们通常都是用的函数定义方式为ANSI-C的函数定义方式。但是在C语言之父创立C语言之时,函数的定义形式并非现在我们所见到的形式。下面的代码显示了这样的差别,注意观察二者在声明与函数体签名上的差别。
#include#include /*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两种函数定义风格就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。