溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何理解ANSI和K&R兩種函數(shù)定義風(fēng)格

發(fā)布時(shí)間:2021-10-14 14:17:08 來(lái)源:億速云 閱讀:221 作者:柒染 欄目:編程語(yǔ)言

這篇文章將為大家詳細(xì)講解有關(guān)如何理解ANSI和K&R兩種函數(shù)定義風(fēng)格,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

在C語(yǔ)言的函數(shù)定義上,我們通常都是用的函數(shù)定義方式為ANSI-C的函數(shù)定義方式。但是在C語(yǔ)言之父創(chuàng)立C語(yǔ)言之時(shí),函數(shù)的定義形式并非現(xiàn)在我們所見(jiàn)到的形式。下面的代碼顯示了這樣的差別,注意觀察二者在聲明函數(shù)體簽名上的差別。

#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的風(fēng)格與ANSI-C的比,K&R風(fēng)格又稱為identifier-list,而另一種風(fēng)格則又稱為declarator,其中originalFunc(param1, param2) 即為這個(gè)declarator。事實(shí)上兩種風(fēng)格在ANSI 99 標(biāo)準(zhǔn)中(6.9.1節(jié))都有定義,只不過(guò)我們更推崇declarator的方式。因?yàn)樗鼘?duì)參數(shù)進(jìn)行強(qiáng)制類型轉(zhuǎn)換,而標(biāo)識(shí)符列表的方式則沒(méi)有進(jìn)行這項(xiàng)操作。

關(guān)于如何理解ANSI和K&R兩種函數(shù)定義風(fēng)格就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI