亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言的語法風格與代碼書寫規范指南

2020-01-26 14:43:56
字體:
來源:轉載
供稿:網友

C代碼:

#include <stdio.h>int main(void){ printf("That is Right Style/n"); return 0;}

在一個標準的C語言程序中,最特殊的莫過于main函數了,而說到底它就是一個函數而已,僅僅因為它地位特殊擁有第一執行權力,換句話說,難道因為一個人是省長它就不是人類了?所以函數該有的它都應該有,那么函數還有什么呢?

函數大體上分為內聯函數(C99)(內聯函數并非C++專屬,C語言亦有,具體見前方鏈接)和非內聯的普通函數,它們之間有一個很明顯的特點(一般情況下),那就是不寫原型直接在main函數上方定義,即使不加'inline'關鍵字,也能被編譯器默認為內聯函數,但之后帶來的某些并發問題就不是編譯器考慮的了。

普通函數正確的形式應該為聲明與定義分離,聲明就是一個函數原型,函數原型應該有一個函數名字,一個參數列表,一個返回值類型和一個分號。定義就是函數的內在,花括號內的就是函數的定義:

//...int function(int arg_1, float arg_2);//...int main(int argc, char* argv[]){ int output = function(11, 22.0); printf("%d/n",output); return 0;}int function(int arg_1, float arg_2){ int return_value = arg_1; float temp_float = arg_2; return return_value;} 

 
依上所述,當非必要時,在自己編寫函數的時候請注意在開頭(main函數之前)寫上你的函數的原型,并且在末尾(main函數之后)寫上你的函數定義,這是一個很好的習慣以及規范。所謂代碼整潔之道,就是如此。

函數的另一種分類是,有返回值和無返回值,返回值的類型可以是內建(build-in)的也可以是自己定義的(struct, union之類),無返回值則是void。

為什么我們十分譴責void main()這種寫法?因為這完全是中國式教育延伸出來的譚式寫法,main函數的返回值看似無用,實際上是由操作系統接收,在Windows操作系統下也許無甚"大礙"(實際上有),當你使用Linux的過程中你會清晰的發現一個C語言程序的main返回值關系到一個系統是否能正常,高效的運行,這里稍微提一句,0在Linux程序管道通信間代表著無錯可行的意思。所以請扔掉void main這種寫法。
為什么我們對 main()這種省略返回值的寫法置有微詞?能發明這種寫法的人,必定是了解了,在C語言中,如果一個函數不顯式聲明自己的返回值,那么會被缺省認為是int,但這一步是由編譯器掌控,然而C語言設計之初便是讓我們對一切盡可能的掌握,而一切不確定因子我們都不應該讓它存在。其次有一個原則,能自己做的就不要讓編譯器做。

為什么我們對參數放空置有不滿(int main())?在C語言中,一個函數的參數列表有三種合法形態:

 int function(); int function(void); int function(int arg_n); int function(int arg_n, ...);

第一種代表擁有未知個參數,第二種代表沒有參數,第三種代表有一個參數,第四種代表擁有未知個參數,并且第一個參數類型為int,未知參數在C語言中有一個解決方案就是,可變長的參數列表,具體參考C標準庫,在此我們解釋的依據就是,我們要將一切都掌控在自己的手中,我們不在括號內填寫參數,代表著我們認為一開始的意思是它為空,正因此我們就應該明確說明它為void,而不該讓它成為一個未知參數長度的函數,如此在你不小心傳入參數的時候,編譯器也無法發現錯誤。

int main(int argc, char* argv[]) 和 int main(void)才是我們該寫的C語言標準形式
對于縮進,除了編譯器提供的符號縮進之外,我們可以自己給自己一個規范(請少用或者不用Tab),比如每一塊代碼相教上一個代碼塊有4格的縮進。
對于學習C語言,請使用.c文件以及C語言編譯器練習以及編寫C程序,請不要再使用C++的文件編寫C語言程序,并且自圓其說為了效率而使用C++的特性在C語言中,我們是祖國的下一代,是祖國的未來,請不要讓自己毀在當下,珍愛編程,遠離清華大學出版社。

之所以如此敘述,并不是因為情緒,而是當真如此,下方代碼:

 /*file: test.c*/ #include <stdio.h> #define SIZES 5 int main(void) {  int* c_pointer = malloc(SIZES * sizeof(int));  /*發生了一些事情*/  free(c_pointer);  return 0; }

這是一段標準的C語言程序,但是它能在C++個編譯器下編譯運行嗎?換句話說當你將文件擴展名由.c改為.cpp之后,它能編譯通過嗎?答案是不能。

為什么?答案是C++并不支持void*隱式轉換為其他類型的指針,但是C語言允許。還有許許多多C于C++不相同的地方,興許有人說C++是C的超集,但我并不這么認為,一門語言的出現便有它的意義所在,關鍵在于我們如何發揮它的最大優勢,而不是通過混淆概念來增強實用性。

程序式子的寫法

一個人活在世界上,時時刻刻都注意著自己的言行舉止,而寫程序也是如此,對于一個規范的能讓別人讀懂的程序而言,我們應該盡可能減少阻礙因子,例如:

 int main(void) {int complex_int=100; int i,j,k,x; for(int temp=0;temp<complex_int;++temp){k=temp; x=k+complex_int;} printf(complex_int="%d is k=%d x=%d/n",complex_int,k,x); return 0;}

對于上述的代碼,我總是在班級里的同學手下出現,但這段代碼除了讓別人困惑以外,自己在調試的時候也是十分不方便,每每遇到問題了,即便IDE提示了在某處錯誤,你也找不到問題所在,經常有人來問我哪里錯了,大部分情況都是少了分號,括號,或者作用域超過,原因在哪?

要是一開始將代碼寫清楚了,這種情況簡直是鳳毛麟角,想遇上都難。對于一個代碼而言,我們應該注意讓其變得清晰。

等號兩邊使用空格:

 int complex_int = 100;

使用多個變量的聲明定義,或者函數聲明定義,函數使用時,注意用空格分開變量:

 int i, j, k, x;//但是十分不建議這么聲明難以理解意義的變量 printf("complex_int = %d is k = %d x = %d/n", complex_int, k, x); void present(int arg_1, double arg_2);

對于一個清晰的程序而言,我們要讓每一個步驟清晰且有意義,這就要求我們在編寫程序的時候盡量能讓代碼看起來結構化,或者整體化。盡量讓每個程序式子為一行,如果有特別的需要讓多個式子寫在同一行,可以使用,操作符進行組合,但是會讓程序更難理解,日后調試的時候也更難發現錯誤。

 /*Style 1*/  for(int temp = 0;temp < complex_int;++temp) {  k = temp;  x = k + complex_int; } /*Style 2*/ for(int temp = 0;temp < complex_int;++temp){  k = temp;  x = k + complex_int; }

對于上方的代碼,是C語言代碼花括號的兩種風格,最好能選擇其中一種作為自己的編程風格,這樣能讓你的程序看起來更加清晰,混合使用的利弊并不好說,關鍵還是看個人風格。

對于作用域而言,在C語言中有一個經常被使用的特例,當一個條件語句,或者循環只有一條語句的時候,我們常常省略了花括號{},而是僅僅使用一個分號作為結尾,這在很多情況下讓代碼不再亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

日本亚洲欧美三级| 国产在线精品一区免费香蕉| 久久精品亚洲94久久精品| 456国产精品| 亚洲一区二区在线| 久久久久久久av| 亚洲free性xxxx护士hd| 欧美精品激情视频| 在线观看国产精品淫| 久久久久99精品久久久久| 欧美怡春院一区二区三区| 亚洲精品电影久久久| 亚洲精美色品网站| 欧美日韩亚洲成人| 久久精品国亚洲| 欧美丝袜一区二区| 欧美日韩福利电影| 久久精品福利视频| 国产精品夫妻激情| 日韩美女写真福利在线观看| 久久天天躁狠狠躁夜夜躁2014| 久久97精品久久久久久久不卡| 久久久女女女女999久久| 国产ts人妖一区二区三区| 亚洲国产精品女人久久久| 2019中文字幕在线| 精品无人区太爽高潮在线播放| 欧美巨猛xxxx猛交黑人97人| 亚洲精品一区二区久| www欧美xxxx| 国产成人avxxxxx在线看| 亚洲成年人在线| 69久久夜色精品国产69乱青草| 一级做a爰片久久毛片美女图片| 久久精品久久久久久国产 免费| 欧美日韩国产成人在线| 亚洲丁香久久久| 国产欧美日韩免费| 国产精品久久久久久久久影视| 日本免费久久高清视频| 一本色道久久88精品综合| 国产日韩在线亚洲字幕中文| 日韩av在线天堂网| 日韩免费看的电影电视剧大全| 伊人伊人伊人久久| 欧美一级淫片videoshd| 黑人巨大精品欧美一区二区免费| 久久久亚洲成人| 国产精品美女在线观看| 久久躁狠狠躁夜夜爽| 亚洲欧美日韩爽爽影院| 日韩欧美亚洲一二三区| www.亚洲一区| 亚洲女性裸体视频| 日韩毛片中文字幕| 亚洲国产天堂久久国产91| 韩国v欧美v日本v亚洲| 欧美日韩综合视频网址| 欧美日韩一区二区在线播放| 欧美中文字幕视频在线观看| 日韩黄色高清视频| 亚洲欧美一区二区激情| 丝袜亚洲欧美日韩综合| 中文字幕亚洲一区| 91色在线视频| 一区二区三区在线播放欧美| 亚洲国产精品成人va在线观看| 亚洲色图激情小说| 久久久精品网站| 国产a∨精品一区二区三区不卡| 国产精品久久999| 久久成年人视频| 欧美午夜无遮挡| 91精品国产免费久久久久久| 日韩精品免费在线播放| 国产精品第10页| 国产精品爽爽爽| 久久久久久欧美| 欧美综合在线观看| 欧美日韩中文字幕综合视频| 中文字幕9999| 美女啪啪无遮挡免费久久网站| 国产精品爽爽爽爽爽爽在线观看| 成人免费视频a| 91国产高清在线| 欧美在线视频一区| 久久免费视频在线| 亚洲女同精品视频| 欧美在线视频网| 福利一区福利二区微拍刺激| 国产这里只有精品| 欧美精品一本久久男人的天堂| 亚洲国产中文字幕久久网| 日韩亚洲国产中文字幕| 亚洲精品视频在线观看视频| 国内外成人免费激情在线视频| 国产精品久久久久久久9999| 日韩欧美一区二区三区久久| 久久精品国产v日韩v亚洲| 成人妇女免费播放久久久| 亚洲成人在线网| 91色在线视频| 欧美成人免费一级人片100| 91精品国产色综合久久不卡98| 国产精品久久中文| 国产精品久久97| 国产精品久久久久久久一区探花| 亚洲黄色www网站| 2019国产精品自在线拍国产不卡| 成人国产精品一区二区| 欧美午夜丰满在线18影院| 国产精品草莓在线免费观看| 日本精品性网站在线观看| 国产亚洲精品久久久久久牛牛| 久久久久久久国产精品视频| 日韩精品高清在线观看| 欧美寡妇偷汉性猛交| 久久乐国产精品| 亚洲专区中文字幕| 久久91精品国产91久久久| 欧美大片欧美激情性色a∨久久| 欧美电影在线观看| 91精品国产综合久久久久久久久| 欧美性极品xxxx娇小| 超在线视频97| 久久精品视频亚洲| 亚洲欧洲一区二区三区在线观看| 亚洲视频在线观看网站| 色综久久综合桃花网| 琪琪亚洲精品午夜在线| 国产亚洲精品美女久久久| 久久久av网站| 日本中文字幕成人| 亚洲视频视频在线| 夜夜狂射影院欧美极品| 欧美裸体视频网站| 91久久久精品| 在线日韩中文字幕| 国产精品久久久久久影视| 97久久伊人激情网| 久久夜精品香蕉| 久久综合国产精品台湾中文娱乐网| 亚洲国产精品电影| 亚洲人成网站在线播| 欧美日韩国产中文精品字幕自在自线| 亚洲欧美一区二区三区久久| 国产成人精品国内自产拍免费看| 777午夜精品福利在线观看| 亚洲人午夜精品免费| 亚洲国产欧美一区二区三区久久| 亚洲人午夜精品免费| 国产精品美女午夜av| 国产精品欧美日韩一区二区| 久久精品国产2020观看福利| 在线播放日韩专区| 亚洲精品欧美日韩专区| 亚洲人成在线观看网站高清| 久久久99久久精品女同性| 欧美大肥婆大肥bbbbb| 国产成人短视频| 日韩精品极品毛片系列视频| 国产一区二区三区日韩欧美| 成人激情视频在线| 亚洲人免费视频|