1. c語言小白在線問怎麼寫這個程序啊
基本輸入輸出
C語言本身並沒有輸入輸出功能的語句,數據的輸入輸出都是通過函數調用來實現的。
C語言提供了標准函數庫,其中就包括了基本輸入輸出函數,C語言把這一類的函數的定義放在了頭文件stdio.h中,
關於怎麼快速學C/C++,有什麼方法,這個問題,想必大家都已經心中有數了,打算深入了解這個行業的朋友,可以加下小編的C/C++學習群:666+295+498,邀請碼(阿岐編程)不管你是小白還是大牛,小編我都歡迎,不定期分享干貨,包括小編自己整理的一份2018最新的C/C++資料和0基礎入門教程,歡迎初學和進階中的小夥伴。
每天晚上20:00我都會開直播給大家mianfei分享C/C++學習知識和路線方法,群里會不定期更新最新的教程和學習方法(進群送2018C/C++學習教程),大家都是學習C/C++的,或是轉行,或是大學生,還有工作中想提升自己能力的C/C++黨,如果你是正在學習C/C++的小夥伴可以加入學習。最後祝所有程序員都能夠走上人生巔峰,讓代碼將夢想照進現實,非常適合新手學習,有不懂的問題可以隨時問我,工作不忙的時候希望可以給大家解惑。
要使用這些函數時只需要添加一個編譯預處理命令#include即可,關於頭文件的作用後面還會詳細介紹
字元輸出函數putchar()
一般格式:
putchar(表達式)
功能:函數功能是在屏幕上輸出一個字元;表達式可以是字元或整型表達式,表達式為將要輸出的字元本身或ASC||碼,
因為ASC||碼只有0~255,所以當表達式大於255時,系統會自動取256的余數,當然如果表達式不是整型值時系統會自動舍棄小數部分,
有趣的是,有些ASC||碼是無法顯示的,比如7表示為計算機揚聲器響一聲
字元輸入函數getchar()
一般格式:
getchar()
功能:從標准輸入設備(鍵盤)上輸入一個字元(需要回車),當用戶輸入一串字元時(需要回車)只返回所輸入的第一個字元,如果直接回車則getchar()的值是回車,函數getchar()的值是其獲得的字元;下面的語句都是正確的
c=getchar();
c=getchar()+1;
putchar(getchar());
單獨使用getchar()而不做其他處理,有使程序暫停的作用,待用戶按下回車時繼續,
字元輸入函數getche()和getch()
一般格式:
getche()
getch()
這兩個函數與getchar()大致相同,但有兩點不同,一是,不需要回車,所以不會發生輸入多個字元的情況,
二是,getche()輸入時會回顯屏幕但getch()不會
標准格式輸出函數printf()
一般格式:
printf(格式控制字元串,輸出值參數列表);
關於格式控制詳細內容請網路
格式輸出函數scanf()
一般格式:
scanf(格式控制字元串,變數地址列表)
變數
在c語言中,每一個變數和函數都有兩個屬性:數據類型(如整型、字元型)和數據的存儲類別(靜態存儲和動態存儲)
從變數的作用域(即從空間)角度來分,可以分為全局變數和局部變數
從變數值存在時間(即生存期)角度來分,可以分為靜態存儲方式和動態存儲方式
靜態存儲方式是指在程序運行期間由系統分配固定的存儲空間的方式,而動態存儲方式是指在程序運行期間根據需要進行動態的分配存儲空間的方式
關於存儲類別具體包含4種,自動的(auto)、靜態的(static)、寄存器的(register)、外部的(extern)
auto變數
函數局部變數如果不專門聲明為static存儲類別,都是動態隨機分配存儲空間的,數據存儲在動態存儲區中。
函數中的形參和在函數中定義的變數(包括復合語句定義的變數),都屬此類,
在函數調用時系統會給這些變數隨機分配內存,一旦調用結束就會自動釋放這些存儲空間,因此這類局部變數稱為自動變數
關鍵字「auto」可以省略,不寫則隱含確定為「自動存儲類別」,它屬於動態存儲方式
static聲明局部變數
有時希望函數的局部變數的值在函數調用結束後不消失而保留原值,
即其佔用的存儲單元不釋放,在下一次調用時,該變數已有值,就是上一次調用結束時的值。
這時就應該指定該局部變數為「靜態局部變數」,用關鍵字static進行聲明。
靜態局部變數屬於靜態存儲類別,在靜態存儲區內分配存儲單元,在程序整個運行期間都不釋放
標識符分關鍵字,預定義標識符和用戶標識符。
1)標識符命名原則
a,只能有字母,數字,下劃線和美元($)組成。
b,不能以數字開頭。
c,不能與關鍵字重名。
d,嚴格區分大小寫。
2)標識符命名規范
a,駝峰命名法。(第一個單詞首字母小寫,其他單詞首字母大寫)。getName。
b,名稱簡練,望文知意
c,避免出現數字編號。name1,name2.
d,多個文件共同使用的全局變數或者函數名稱加范圍限定符。UI_name
3) 關鍵字就是C本身使用的,不能作他用的字。總共有32個。
數據類型關鍵字:void int char float double (5)
類型修飾符關鍵字:short long signed unsigned(4)
復雜類型關鍵字:struct enum union(3)
流程式控制制關鍵字:for break continue do while if else goto suitch case default return(12)
存儲類型關鍵字:auto extern static regist ( 4)
其他關鍵字:const sizeof typedel volatile(4)
5 注釋
對代碼的解釋性文字。
作用:方便程序員之間交流。
特點:不參與編譯。
注釋分類
1)單行分類(//注釋內容)。只注釋單行
2)多行分類(/* 注釋內容*/)。注釋多行,注釋文字間可以換行。快捷鍵(command + ?)
6 數據類型
常用基本數據類型佔用空間(64位機器為例)
char : 1個位元組
int :4個位元組
float:4個位元組
double:8個位元組
基本類型書寫
整數
a,默認為10進制 ,10 ,20 .
b,以0開頭為8進制,045,021.
c.,以0b開頭為2進制,0b11101101。
d,以0x開頭為16進制,0x21458adf。
2. 為什麼scanf可以作為變數名但是sizeof不能作為變數名
sizeof是c語言保留的關鍵詞不能作為變數名,scanf只是一個庫函數名,可以使用在你的代碼里局部變數會屏蔽函數代碼外的變數。另外c語言變數詳細規則如下:
變數的命名規范
1、起名要有意義;
2、只能以英文字母、下劃線( _ )開頭。後面可以接數字、英文字母、下劃線;
3、不能是C語言中的關鍵字C語言中的關鍵字關鍵字就是已被C語言本身使用,不能作其它用途使用的字。例如關鍵字不能用作變數名、函數名等,C語言中一共有32個關鍵字auto register unsigned if while staticdouble int struct break else long switch case enum typedef char extern return union const float shortcontinue for signed void default goto sizeof volatile
標示符命名規范
1、起的名字要有意義如:避免使用a、b、c等單個字母名字。或者避免使用xsffsdsdsrew之類的字元做名字!推薦標示符起名就知道是什麼意思,如給一個變數起名:age。一看就知道這個變數是用來保存年齡的
2、標示符才用駝峰命名法註解:駝峰命名法(Camel-Case)駝峰命名法(Camel-Case)是電腦程序編寫時的一套命名規則(慣例)。程序員們為了自己的代碼能更容易的在同行之間交流,所以才取統一的可讀性比較好的命名方式。例如:有些程序員喜歡全部小寫,有些程序員喜歡用下劃線,所以如果要寫一個my name的變數,他們常用的寫法會有myname、my_name、MyName或者myName。這樣的命名規則不適合所有程序員閱讀,而利用駝峰命名法來表示,可以增加程序可讀性。駝峰命名法就是當變數名或函數名是由一個或多個單字連結在一起,而構成的唯一識別字時,第一個單字以小寫字母開始,第二個單字的首字母大寫;或每一個單字的首字母都採用大寫字母,例如:myFirstName、myLastName,這樣的變數名看上去就像駱駝峰一樣此起彼伏,故而得名。
3. 如何優雅地為程序中的變數和函數命名
簡言之,根據語意來選擇詞彙,別無它法……然而,有時我們會不知用什麼詞彙更合適。
當你想到某個抽象的東西,你更傾向於最先想到的詞語,除非你故意不這樣,這些詞也會搶著出現,直到模糊或改變你的想法。
當你想到一個具體的對象,你覺得詞窮,然後你想描述的已經看到了,然後你繼續尋找更適合它的詞。
哈哈,命名竟成了編程中最難的事~
Martin Fowler曾經在一篇文章中曾經引用過Phil Karlton的話:
There are only two hard things in Computer Science: cache invalidation
and naming things.
他說這句話在很長的一段時間內都是他最喜歡的話。可見命名對於廣大的程序員來說的確是個大問題。
對於我們中國人來說,問題可能出在兩個方面:
– 自打學編程開始就沒被教育過要重視命名。
這可以在譚浩強的《C語言入門》一書中可見一斑。《C語言入門》可以說是很多程序員在大學時學習的第一門編程語言使用的教材。而本書通篇都是各種
a,b,c,x,y,z 的命名方式。這種poor naming的方式被廣大程序員紛紛效仿,導致如今在很多項目代碼中隨處可見。
– 命名需要一定的英文功底,而國內程序員的英文水平參差不齊。
很多程序員被教育後開始逐漸重視命名,但是受限於英文水平,不知道使用什麼合適的英文詞彙來命名。有的甚至直接把中文直譯為英文的方式命名,或者直接用拼音來命名,反而得不償失。
命名的重要性我想不需要過於強調。如今的軟體開發早已不是求伯君那種單槍匹馬的時代。你寫下的每一行代碼都會在不久的以後被團隊的其他人甚至你自己多次查看。如果是個開源項目,那麼更會被全球各地的人查看源代碼。所以代碼的可讀性就變得尤為重要。如果讀者能夠輕松讀出你的代碼的意圖,那麼就說明你的命名功底相當扎實。
比如在一個管理系統中,你使用這樣的代碼: a = b * c
很容易讓人摸不著頭腦,雖然程序能夠正常運作,但恐怕沒人敢輕易修改這行他們不了解的代碼。而如果修改成為這樣: weeklypay =
hours_worked * pay_rate; 那恐怕極少有人不懂這行代碼的意圖。
糟糕的命名也會導致大量無謂的注釋,這是一個很容易跳進去的陷阱。下一段代碼怕別人不明白你的意圖,那麼就加上注釋。這貌似是一個很精妙的想法,實際上卻南轅北轍。比如以下的注釋:
int d; // elapsed time in days
貌似很容易讓人讀懂,但是問題還是很多。首先注釋不能跟著所有的引用,在定義處了解了d的含義,繼續往下看的話卻很容易忘記;其次代碼更新了,很可能會忘記修改注釋,反而給把讀者帶入歧途。
與其用這樣的注釋,還不如直接重命名: int elapsedTimeInDays; 這樣清晰易懂,還不用維護注釋,何樂而不為?
那麼如何著手來提高的自己的命名技巧那?
首先尋找一份公認的代碼規范,並嚴格按照這樣的標准執行。比如google開源了自己內部使用的語言編碼規范,我們可以直接拿來使用。比如請看Google
Java的style guide,相當詳實。除此之外還有C++等。這里收集了Google對各種語言的編碼規范,非常具有參考價值。
標準的代碼規范中的每一條都是有勝出的理由,值得我們遵從。但某些命名問題不一定只有一種最好的解決方式,這就需要團隊自己建立起約定。比如對於Java單元測試類的命名方式,不同的團隊可能不一樣。比如有的團隊喜歡以should開頭,有的喜歡test開頭,有的喜歡駱駝命名法,有些喜歡下劃線命名法,每種方式有各自的利弊,沒有一種能完全脫穎而出,所以需要團隊自行制定。一旦確定使用某一種,那麼一定要保持一致。
某些命名規范其實是可以進行自動化檢查的,比如在Java應用的構建過程中可以引用checkStyle這款插件,對命名進行一些基本的檢查,比如方法名、變數名是否遵循了一定模式等。這樣在一定程度上可以強制大家遵守某些約定。自己以前曾經寫過一篇文章,請參見這里。
最後要在團隊中建立起code review的機制,通過code
review來相互監督糾正命名問題,並且這樣更容易達成一致的命名約定,方便協作開發。code
review可以採取非正式會議評審的方式。最簡單的方式就是每天找個固定時間大家一起聚在一個顯示器前review每個人的代碼,現場提出問題,當事人記錄下來會後更改。這種方式非常高效。另外有的團隊在嵌入代碼時可能會引入一些代碼評審機制,比如pull
request, cherry pick等。這種review方式比較重量級,反饋周期也較長,好處是可以保證最終遷入的代碼是沒有問題的。
很多語言和框架為了更加可讀,都把命名玩出花來了。比如JavaScript生態圈中重要的單元測試工具Jasmine把測試函數以it命名,這樣可以與參數連接起來成為一種表意的自然語言:
如何優雅地為程序中的變數和函數命名?
- 不同的代碼段採用不同的命名長度。通常來說,循環計數器(loop
counters)採用1位的單字元來命名,循環判斷變數(condition/loop
variables)採用1個單詞來命名,方法採用1-2個單詞命名,類採用2-3個單詞命名,全局變數採用3-4個單詞命名。
- 對變數採用具體的命名(specific names)方式,」value」, 「equals」,
「data」在任何情況下都不是一種有效的命名方式。
- 採用有意義的命名(meaningful names)。變數的名字必須准確反映它的含義和內容。
- 不要用 o_, obj_, m_ 等前綴命名。變數不需要前綴標簽來表示自己是一個變數。
- 遵循公司的變數命名規則,在項目中堅持使用同一種變數命名方式。例如txtUserName, lblUserName,
cmbSchoolType等,否則會對可讀性造成影響,而且會令查找/替換工具(find/replace tools)不可用。
- 遵循當前語言的變數命名規則,不要不統一(inconsistently)地使用大/小寫字母。例如:userName, UserName,
USER_NAME, m_userName, username, …。
以Java為例:
* 類名使用駝峰命名法(Camel Case):VelocityResponseWriter
* 包名使用小寫:com.company.project.ui
* 變數使用首字母小寫的駝峰命名法(Mixed Case):studentName
* 常量使用大寫:MAX_PARAMETER_COUNT = 100
* 枚舉類(enum class)採用駝峰命名法,枚舉值(enum values)採用大寫。
* 除了常量和枚舉值以外,不要使用下劃線』_』
- 在同一個類不同的場景(contexts)中不要復用變數名。例如在方法、初始化方法和類中。這樣做可以提高可讀性和可維護性。
- 不要對不同使用目的的變數使用同一個變數名,而是賦予它們不同的名字。這同樣對保持可讀性和可維護性很重要。
- 變數名不要使用非ASCII字元(non-ASCII chars)。這樣做可能會在跨平台使用時產生問題。
-
不要使用過長的變數名(例如50個字元)。過長的變數名會導致代碼醜陋(ugly)和難以閱讀(hard-to-read),還可能因為字元限制在某些編譯器上存在兼容性問題。
- 僅使用一種自然語言(natural language)來命名變數。例如,同時使用德語和英語來命名變數會導致(理解)不一致和降低可讀性。
- 使用有意義的方法名。方法名必須准確表達該方法的行為,在多數情況下以動詞(verb)開頭。(例如:createPasswordHash)
- 遵循公司的方法命名規則,在項目中堅持使用同一種方法命名方式。例如 getTxtUserName(), getLblUserName(),
isStudentApproved(),否則會對可讀性造成影響,而且會令查找/替換工具不可用。
- 遵循當前語言的變數命名規則,不要不統一地使用大/小寫字母。例如:getUserName, GetUserName, getusername,
…。
以Java為例:
* 方法使用首字母小寫的駝峰命名法:getStudentSchoolType
* 方法參數使用首字母小寫的駝峰命名法:setSchoolName(String schoolName)
- 使用有意義的方法參數命名,這樣做可以在沒有文檔的情況下盡量做到「自解釋(documentate itself)」
總之,命名問題只是整個編碼規范中的一小部分,但是起的作用舉足輕重,它是判斷一個程序員是否專業的必要標准。
4. 幾種常見的程序設計中命名規則
幾種常見的程序命名規則
正確並形象地給函數、變數命名,不僅可以增加程序的可讀性,也是程序員編程風格的一種反映。較好的命名習慣,可以有效的提高程序的可維護性。以下介紹幾種常用的變數命名規則。
一、匈牙利命名法:廣泛應用於Microsoft Windows這類環境中。
這種命名技術是由一位能乾的 Microsoft 程序員查爾斯·西蒙尼(Charles Simonyi) 提出的。匈牙利命名法通過在變數名前面加上相應的小寫字母的符號標識作為前綴,標識出變數的作用域,類型等。這些符號可以多個同時使用,順序是先m_(成 員變 量),再指針,再簡單數據類型,再其他。例如:m_lpszStr, 表示指向一個以0字元結尾的字元串的長指針成員變數。
匈牙利命名法關鍵是:標識符的名字以一個或者多個小寫字母開頭作為前綴;前綴之後的是首字母大寫的一個單詞或多個單片語合,該單詞要指明變數的用途。
例如:bEnable, nLength, hWnd。
匈牙利命名法中常用的小寫字母的前綴:
前綴 類型 描述
a Array 數組
b BOOL 布爾
by BYTE 無符號字元
c char 字元
cb Count of bytes 位元組數
cr Color reference value 顏色值
cx,cy Count of x,y(short) 長度
dw DWORD 雙字(無符號長整形)
f Flags 標志
fn Function 函數
g_ Global 全局的
h HANDLE 句柄
i Integer(int) 整數
l Long(long) 長整數
lp Long point 長指針
m_ Data member of a class 類的數據成員
n Short(short) 短整型
np Near point 短指針
p Point 指針
s String 字元串
sz Zero terminated string 以0結尾的字元串
tm Text metric 文本規則
u Unsigned int 無符號整數
ul Unsigned long(ULONG) 無符號長整數
w WORD 無符號短整數
x,y x,y coordinates(short) 坐標
v Void 空
有關項目的全局變數用g_開始,類成員變數用m_。
前綴 類型 例子
C 類 CDocument, CPrintInfo
m_ 成員變數 m_pDoc, m_nCustomers
g_ 全局變數 g_Servers
二、駝峰命名法:近年來越來越流行。
駝峰命名法,正如它的名稱所表示的那樣,指的是混合使用大小寫字母來構成標識符的名字。其中第一個單詞首字母小寫,餘下的單詞首字母大寫。
例如:
printEmployeePaychecks();
函數名中每一個邏輯斷點都有一個大寫字母來標記。
三、帕斯卡(Pascal)命名法:與駝峰命名法類似。
只不過駝峰命名法是第一個單詞首字母小寫,而帕斯卡命名法則是第一個單詞首字母大寫。因此這種命名法也有人稱之為「大駝峰命名法」。
例如:
DisplayInfo();
UserName
都是採用了帕斯卡命名法。
在C#中,以帕斯卡命名法和駱駝命名法居多。
事實上,很多程序設計者在實際命名時會將駝峰命名法和帕斯卡結合使用,例如變數名採用駝峰命名法,而函數採用帕斯卡命名法。
四、下劃線命名法。
下劃線法是隨著C語言的出現流行起來的,在UNIX/LIUNX這樣的環境,以及GNU代碼中使用非常普遍。
4.1 函數的命名
函數名使用下劃線分割小寫字母的方式命名:
設備名_操作名();
操作名一般採用:謂語(此時設備名作為賓語或者標明操作所屬的模塊)或者謂語 賓語/表語(此時設備名作為主語或者標明操作所屬的模塊) 等形式,如:
tic_init();
adc_is_busy();
uart_tx_char();
中斷函數的命名直接使用 設備名_isr() 的形式命名,如:
timer2_isr();
4.2 變數的命名
變數的命名也採用下劃線分割小寫字母的方式命名。命名應當准確,不引起歧義,且長度適中。如:
int length;
uint32 test_offset;
單字元的名字也是常用的,如i, j, k等,它們通常可用作函數內的局部變數。tmp常用做臨時變數名。
局部靜態變數,應加s_詞冠(表示static),如:
static int s_lastw;
全局變數(尤其是供外部訪問的全局變數),應加g_詞冠(表示global),如:
void (* g_capture_hook)(void);
4.3 常量及宏的命名
採用下劃線分割大寫字母的方式命名,一般應以設備名作為前綴,
防止模塊間命名的重復。如:
#define TIMER0_MODE_RELOAD 2
#define TIMER2_COUNT_RETRIEVE(val) ((uint16)(65536 - (val)))
當然,看作介面的宏可以按照函數的命名方法命名,例如:
#define timer2_clear() (TF2 = 0)
#define timer0_is_expired() (TF0)
據考察,沒有一種命名規則可以讓所有的程序員贊同,程序設計教科書一般都不指定命名規則。命名規則對軟體產品而言並不是「成敗悠關」的事,我們不要化太多精力試圖發明世界上最好的命名規則,而應當制定一種令大多數項目成員滿意的命名規則,並在項目中貫徹實施。
5. C語言中宏名是否必須用大寫字母表示舉個例子~
不是必須大寫的,只是通常習慣使用大寫字母定義宏名。
例如:
#define kArrLen 10 // OC駝峰命名法:首字元為k,其他單詞首字元大寫
#define ARR_LEN 10 // C語言中的宏命名規范:所有字母大寫,單詞用下劃線分隔
語法說明:
1、宏名一般用大寫
2、使用宏可提高程序的通用性和易讀性,減少不一致性,減少輸入錯誤和便於修改。例如:數組大小常用宏定義 。
3、預處理是在編譯之前的處理,而編譯工作的任務之一就是語法檢查,預處理不做語法檢查。
4、宏定義末尾不加分號;
5、宏定義寫在函數的花括弧外邊,作用域為其後的程序,通常在文件的最開頭。
6、可以用#undef命令終止宏定義的作用域
(5)c語言駝峰命名法代碼擴展閱讀:
規則:
1、指令都是以#開始。#符號不需要在一行的行首,只要她之前有空白字元就行。在#後是指令名,接著是指令所需要的其他信息。
2、在指令的符號之間可以插入任意數量的空格或橫向製表符。
3、指令總是第一個換行符處結束,除非明確地指明要繼續。
4、指令可以出現在程序中德任何地方。我們通常將#define和#include指令放在文件的開始,其他指令則放在後面,甚至在函數定義的中間。
5、注釋可以與指令放在同一行
6. C語言中變數名有什麼要求
C語言中變數名可由三類字元:字母、下劃線、數字組成。變數名只能由字母或下劃線開頭。變數名不能具有二義性。變數名有長度要求,有效長度是31個字元。在起定的名字中!超出長度規定的部分將被截掉。變數名中的字母不限大小寫,但大小寫意義不同。
(6)c語言駝峰命名法代碼擴展閱讀:
變數名常用命名法:
1、匈牙利命名法,是在每個變數名的前面加上若干表示數據類型的字元。基本原則是:變數名=屬性+類型+對象描述。如i表示int,所有i開頭的變數命都表示int類型。s表示String,所有變數命以s開頭的都表示String類型變數。
2、駱駝命名法,是指混合使用大小寫字母來構成變數和函數的名字。駝峰命名法跟帕斯卡命名法相似,只是首字母為小寫,如userName。因為看上去像駝峰,因此而得名。
3、帕斯卡命名法,即pascal命名法。做法是首字母大寫,如UserName,常用在類的變數命名中。
7. C語言 怎麼用代碼把蛇形變數轉化成駝峰變數
思路:
可以用循環比對字元串,如果遇到 '_' 字元則將此字元刪除,將下一位是字母的字元變成大寫,對比到字元串結束為止
8. C語言的結構體與C++的類的辨析 希望大家能給個總體上的描述。。在線等。謝謝
c語言是面向結構也就是面向過程,java是純面向對象,c++是即可面向過程編程也可面向對象編程;這里說的面向過程和面向對象是一種編程思想,具體說就是:
面向結構,是把要實現的功能分成很多模塊即函數,每個模塊承擔某一功能,每個模塊可能會多次利用,這樣就只需調用函數就行,不用重新定義,節省了代碼和時間。
面向對象,是我們把要實現的功能打包封裝定義成一個類即一個對象,一個對象他既有多個屬性也有多個行為,用類作為程序設計的單元,要實現這個類的功能還得把類實現,就是用類定義對象,就像面向結構里的函數定義後,你還得調用函數才能用函數的功能,類可以實現很多功能及對象的行為,也就是可以包含很多函數模塊和變數,類與類直接可以通信也就是屬性的傳遞就就是變數值的傳遞,這就比面向結構更加抽象,抽象級別更高。
而樓主所說的C語言的結構體,他是來定義數據塊的,其實他只相當與面向對象的對象的屬性,具有多種類型的變數,而沒有對象的行為方式。
9. c語言變數命名規則
變數名由a-z,A-Z,0-9,_(大小寫字母,數字,下劃線)組成,並且開頭不能為0-9(數字)
變數命名方面流行的有以下幾種:
一、匈牙利命名法
這種命名法的出發點是把變數名按:屬性+類型+對象描述的順序組合起來,以使程序員作變數時對變數的類型和其它屬性有直觀的了解,下面是HN變數命名規范。
屬性部分:
g_ 全局變數
c_ 常量
m_ c++類成員變數
s_ 靜態變數
類型部分:
數組 a
指針p
函數fn
無效v
句柄h
長整型l
布爾b
浮點型(有時也指文件)f
雙字 dw
字元串 sz
短整型 n
雙精度浮點d
計數c(通常用cnt)
字元ch(通常用c)
整型i(通常用n)
位元組by
字w
實型r
無符號u
描述部分:
最大Max
最小Min
初始化Init
臨時變數T(或Temp)
源對象Src
目的對象Dest
舉例:
hwnd : h 是類型描述,表示句柄, wnd 是變數對象描述,表示窗口,所以 hwnd 表示窗口句柄;
pfnEatApple : pfn 是類型描述,表示指向函數的指針, EatApple 是變數對象描述,所以它表示指向 EatApple 函數的函數指針變數。
g_cch : g_ 是屬性描述,表示全局變數,c 和 ch 分別是計數類型和字元類型,一起表示變數類型,這里忽略了對象描述,所以它表示一個對字元進行計數的全局變數。
上面就是HN命名法的一般規則。
二、駝峰命名法
駝峰命名法的中心點在於每個單詞的開頭大寫,而駝峰命名法又可分為大駝峰和小駝峰,大駝峰表示所有單詞開頭都大寫,小駝峰表示第一個單詞開頭小寫,後面的單詞開頭大寫
大駝峰:EatSimpleApple
小駝峰:eatSimpleApple
一般大駝峰用於函數命名,小駝峰用於變數命名
當出現縮寫(如IP)時,如果縮寫在開頭,則若為大駝峰則全部大寫,小駝峰則全部小寫,若不在開頭,則全部大寫
大駝峰:IPAddIP
小駝峰:ipAddIP
不過也有將縮寫看作一般單詞的寫法:
大駝峰:IpAddIp
小駝峰:ipAddIp
三、帕斯卡命名法
帕斯卡命名法是指每個單詞之間用下劃線隔開,每個單詞都小寫(縮寫也一樣)
示例:eat_simple_apple
示例:ip_add_ip
10. C語言求助啊!!!急啊!!!
declaration syntax error:聲明語法錯誤
1、少分號,應該以分號結束每一個函數體
2、不要用空格,可以用下劃線「_」或者駝峰命名法命名函數(void CreateWeichaSlink(Slink *L))或者變數
void wenjian()
void Create weicha slink(Slink *L)
void DisplayMenu()
改成:
void wenjian();
void Create_weicha_slink(Slink *L);
void DisplayMenu();