您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何理解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兩種函數定義風格就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。