複製鏈接
請複製以下鏈接發送給好友

c語言

(計算機編程語言)

鎖定
C語言是一種較早的程序設計語言,誕生於1972年的貝爾實驗室。1972 年,Dennis Ritchie 設計了C語言,它繼承了B語言的許多思想,並加入了數據類型的概念及其他特性。 儘管C 語言是與 UNIX 操作系統一起被開發出來的,但它不只支持UNIX。 [11]  C是一種通用(廣泛可用)的編程語言。
程序設計語言實與編譯器是一體的,C編譯器有著名的GCC(GNU Compiler Collection)等。 [12] 
廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。儘管C語言提供了許多低級處理的功能,但仍然保持着跨平台的特性,以一個標準規格寫出的C語言程序可在包括類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯。 [1] 
最新的C語言標準是C23 [14] 
軟件名稱
C語言
上線時間
1972年
軟件語言
英文
類    別
高級語言
創始人
丹尼斯·裏奇
發    源
B語言
主要編譯器
Visual C++ClangGCCTurbo C
影響語言
C++C#D語言JavaJavaScriptObjectPHPPythonObjective-CSwift
是否區分大小寫

c語言簡介

C語言是一門面向過程計算機編程語言,與C++、C#、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。C語言描述問題比彙編語言迅速、工作量小、可讀性好、易於調試、修改和移植,而代碼質量與彙編語言相當。C語言一般只比彙編語言代碼生成目標程序效率低10%-20%。因此,C語言可以編寫系統軟件。 [2] 
當前階段,在編程領域中,C語言的運用非常之多,它兼顧了高級語言和彙編語言的優點,相較於其它編程語言具有較大優勢。計算機系統設計以及應用程序編寫是C語言應用的兩大領域。同時,C語言的普適較強,在許多計算機操作系統中都能夠得到適用,且效率顯著。 [3] 
C語言擁有經過了漫長髮展歷史的完整的理論體系,在編程語言中具有舉足輕重的地位。 [4] 

c語言發展歷史

C語言誕生於美國的貝爾實驗室,由丹尼斯·裏奇(Dennis MacAlistair Ritchie)以肯尼斯·藍·湯普森(Kenneth Lane Thompson)設計的B語言為基礎發展而來,在它的主體設計完成後,湯普森和裏奇用它完全重寫了UNIX,且隨着UNIX的發展,c語言也得到了不斷的完善。為了利於C語言的全面推廣,許多專家學者和硬件廠商聯合組成了C語言標準委員會,並在之後的1989年,誕生了第一個完備的C標準,簡稱“C89”,也就是“ANSI C”,截至2020年,最新的C語言標準為2018年6月發佈的“C18”。 [5] 
C語言之所以命名為C,是因為C語言源自Ken Thompson發明的B語言,而B語言則源自BCPL語言。
1967年,劍橋大學的Martin Richards對CPL語言進行了簡化,於是產生了BCPL(Basic Combined Programming Language)語言。
20世紀60年代,美國AT&T公司貝爾實驗室(AT&T Bell Laboratories)的研究員肯·湯普森(Kenneth Lane Thompson)閒來無事,手癢難耐,想玩一個他自己編的,模擬在太陽系航行的電子遊戲——Space Travel。他揹着老闆,找到了台空閒的小型計算機——PDP-7。但這台電腦沒有操作系統,而遊戲必須使用操作系統的一些功能,於是他着手為PDP-7開發操作系統。後來,這個操作系統被命名為——UNICS(Uniplexed Information and Computing Service)。
1969年,美國貝爾實驗室的Ken Thompson,以BCPL語言為基礎,設計出很簡單且很接近硬件的B語言(取BCPL的首字母),並且用B語言寫了初版UNIX操作系統(叫UNICS)。
1971年,同樣酷愛Space Travel的丹尼斯·裏奇為了能早點兒玩上游戲,加入了湯普森的開發項目,合作開發UNIX。他的主要工作是改造B語言,使其更成熟。 [6] 
1972年,美國貝爾實驗室的丹尼斯·裏奇在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。
1973年初,C語言的主體完成。湯普森和裏奇迫不及待地開始用它完全重寫了UNIX。此時,編程的樂趣使他們已經完全忘記了那個“Space Travel”,一門心思地投入到了UNIX和C語言的開發中。隨着UNIX的發展,C語言自身也在不斷地完善。直到2020年,各種版本的UNIX內核和周邊工具仍然使用C語言作為最主要的開發語言,其中還有不少繼承湯普遜和裏奇之手的代碼 [6] 
在開發中,他們還考慮把UNIX移植到其他類型的計算機上使用。C語言強大的移植性(Portability)在此顯現。機器語言彙編語言都不具有移植性,為x86開發的程序,不可能在Alpha、SPARCARM等機器上運行。而C語言程序則可以使用在任意架構的處理器上,只要那種架構的處理器具有對應的C語言編譯器和庫,然後將C源代碼編譯、連接成目標二進制文件之後即可在哪種架構的處理器運行。 [6] 
1977年,丹尼斯·裏奇發表了不依賴於具體機器系統的C語言編譯文本《可移植的C語言編譯程序》。
C語言繼續發展,在1982年,很多有識之士和美國國家標準協會(ANSI)為了使C語言健康地發展下去,決定成立C標準委員會,建立C語言的標準。委員會由硬件廠商、編譯器及其他軟件工具生產商、軟件設計師、顧問、學術界人士、C語言作者和應用程序員組成。1989年,ANSI發佈了第一個完整的C語言標準——ANSI X3.159-1989,簡稱“C89”,不過人們也習慣稱其為“ANSI C”。C89在1990年被國際標準化組織(International Standard Organization,ISO)一字不改地採納,ISO官方給予的名稱為:ISO/IEC 9899,所以ISO/IEC9899:1990也通常被簡稱為“C90”。1999年,在做了一些必要的修正和完善後,ISO發佈了新的C語言標準,命名為ISO/IEC 9899:1999,簡稱“C99”。 [6]  在2011年12月8日,ISO又正式發佈了新的標準,稱為ISO/IEC9899:2011,簡稱為“C11”。
2018年6月,ISO發佈了ISO/IEC9899:2018,簡稱“C18”(或“C17”) [10]  。C18標準沒有引入新的語言特性,只對C11進行了補充與修正。
2022年9月3日,ISO於Open Standards(計算機標準開放組織)網站上發佈了新的C語言標準定稿,稱為 ISO/IEC 9899:2023,簡稱“C23”。 [13-14] 

c語言語言特點

c語言主要特點

C語言是一種結構化語言,它有着清晰的層次,可按照模塊的方式對程序進行編寫,十分有利於程序的調試,且c語言的處理和表現能力都非常的強大,依靠非常全面的運算符和多樣的數據類型,可以輕易完成各種數據結構的構建,通過指針類型更可對內存直接尋址以及對硬件進行直接操作,因此既能夠用於開發系統程序,也可用於開發應用軟件。通過對C語言進行研究分析,總結出其主要特點如下:
(1)簡潔的語言
C語言包含的各種控制語句僅有9種,關鍵字也只有32個,程序的編寫要求不嚴格且以小寫字母為主,對許多不必要的部分進行了精簡。實際上,語句構成與硬件有關聯的較少,且C語言本身不提供與硬件相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故c語言擁有非常簡潔的編譯系統。 [5] 
(2)具有結構化的控制語句
C語言是一種結構化的語言,提供的控制語句具有結構化特徵,如for語句、if...else語句和switch語句等。可以用於實現函數的邏輯控制,方便面向過程的程序設計。 [5] 
(3)豐富的數據類型
C語言包含的數據類型廣泛,不僅包含有傳統的字符型、整型浮點型、數組類型等數據類型,還具有其他編程語言所不具備的數據類型,其中以指針類型數據使用最為靈活,可以通過編程對各種數據結構進行計算。 [5] 
(4)豐富的運算符
C語言包含34個運算符,它將賦值、括號等均視作運算符來操作,使C程序的表達式類型和運算符類型均非常豐富。 [5] 
(5)可對物理地址進行直接操作
C語言允許對硬件內存地址進行直接讀寫,以此可以實現彙編語言的主要功能,並可直接操作硬件。C語言不但具備高級語言所具有的良好特性,又包含了許多低級語言的優勢,故在系統軟件編程領域有着廣泛的應用。 [5] 
(6)代碼具有較好的可移植性
C語言是面向過程的編程語言,用户只需要關注所被解決問題的本身,而不需要花費過多的精力去了解相關硬件,且針對不同的硬件環境,在用C語言實現相同功能時的代碼基本一致,不需或僅需進行少量改動便可完成移植,這就意味着,對於一台計算機編寫的C程序可以在另一台計算機上輕鬆地運行,從而極大的減少了程序移植的工作強度。 [5] 
(7)可生成高質量、目標代碼執行效率高的程序
與其他高級語言相比,C語言可以生成高質量和高效率的目標代碼,故通常應用於對代碼質量和執行效率要求較高的嵌入式系統程序的編寫。 [5] 

c語言特有特點

C語言是普適性最強的一種計算機程序編輯語言,它不僅可以發揮出高級編程語言的功用,還具有彙編語言的優點,因此相對於其它編程語言,它具有自己獨特的特點。具體體現為以下三個方面:
其一,廣泛性。C語言的運算範圍的大小直接決定了其優劣性。C語言中包含了34種運算符,因此運算範圍要超出許多其它語言,此外其運算結果的表達形式也十分豐富。此外,C語言包含了字符型、指針型等多種數據結構形式,因此,更為龐大的數據結構運算它也可以應付。 [3] 
其二,簡潔性。9類控制語句和32個關鍵字是C語言所具有的基礎特性,使得其在計算機應用程序編寫中具有廣泛的適用性,不僅可以適用廣大編程人員的操作,提高其工作效率,同時還能夠支持高級編程,避免了語言切換的繁瑣。 [3] 
其三,結構完善。C語言是一種結構化語言,它可以通過組建模塊單位的形式實現模塊化的應用程序,在系統描述方面具有顯著優勢,同時這一特性也使得它能夠適應多種不同的編程要求,且執行效率高。 [3] 

c語言缺點

1.C語言的缺點主要表現為數據的封裝性弱,這一點使得C在數據的安全性上有很大缺陷,這也是C和C++的一大區別。
2.C語言的語法限制不太嚴格,對變量的類型約束不嚴格,影響程序的安全性,對數組下標越界不作檢查等。從應用的角度,C語言比其他高級語言較難掌握。也就是説,對用C語言的人,要求對程序設計更熟練一些。 [7] 

c語言語言組成

c語言基本構成

數據類型
C的數據類型包括:整型shortintlong、long long)、字符型(char)、實型或浮點型單精度float雙精度double)、枚舉類型enum)、數組類型、結構體類型struct)、共用體類型(union)、指針類型和空類型void)。
常量其值不可改變,符號常量名通常用大寫。
變量是以某標識符為名字,其值可以改變的量。標識符是以字母下劃線開頭的一串由字母、數字或下劃線構成的序列,請注意第一個字符必須為字母或下劃線,否則為不合法的變量名。變量在編譯時為其分配相應存儲單元
數組
如果一個變量名後面跟着一個有數字的中括號,這個聲明就是數組聲明。字符串也是一種數組。它們以ASCII的NULL作為數組的結束。要特別注意的是,中括號內的索引值是從0算起的。
指針
如果一個變量聲明時在前面使用*號,表明這是個指針型變量。換句話説,該變量存儲一個地址,而*(此處特指單目運算符*,下同。C語言中另有雙目運算符*)則是取內容操作符,意思是取這個內存地址裏存儲的內容。指針是C語言區別於其他同時代高級語言的主要特徵之一。
指針不僅可以是變量的地址,還可以是數組、數組元素、函數的地址。通過指針作為形式參數可以在函數的調用過程得到一個以上的返回值,不同於return(z)這樣的僅能得到一個返回值。
指針是一把雙刃劍,許多操作可以通過指針自然的表達,但是不正確的或者過分的使用指針又會給程序帶來大量潛在的錯誤。
字符串
C語言的字符串其實就是以'\0'字符結尾的char型數組,使用字符型並不需要引用庫,但是使用字符串就需要C標準庫裏面的一些用於對字符串進行操作的函數。它們不同於字符數組。使用這些函數需要引用頭文件
文件輸入/輸出
在C語言中,輸入和輸出是經由標準庫中的一組函數來實現的。在ANSI C中,這些函數被定義在頭文件;中。
標準輸入/輸出
有三個標準輸入/輸出是標準I/O庫預先定義的:
stdin標準輸入
stderr輸入輸出錯誤
運算
C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則就會顯得十分重要。

c語言關鍵字

關鍵字又稱為保留字,就是已被C語言本身使用,不能作其它用途使用的字。例如關鍵字不能用作變量名、函數名等標識符
數據類型關鍵字
short:修飾int,短整型數據,可省略被修飾的int。(K&R時期引入)
long:修飾int,長整型數據,可省略被修飾的int。(K&R時期引入)
long long:修飾int,超長整型數據,可省略被修飾的int。(C99標準新增)
signed:修飾整型數據,有符號數據類型。(C89標準新增)
unsigned:修飾整型數據,無符號數據類型。(K&R時期引入)
restrict用於限定和約束指針,並表明指針是訪問一個數據對象的初始且唯一的方式。(C99標準新增)
複雜類型關鍵字
struct結構體聲明。(K&R時期引入)
union:聯合體聲明。(K&R時期引入)
enum:枚舉聲明。(C89標準新增)
typedef:聲明類型別名。(K&R時期引入)
sizeof:得到特定類型或特定類型變量的大小。(K&R時期引入)
inline:內聯函數用於取代定義,會在任何調用它的地方展開。(C99標準新增)
auto:指定為自動變量,由編譯器自動分配及釋放。通常在棧上分配。與static相反。當變量未指定時默認為auto。(K&R時期引入)
static:指定為靜態變量,分配在靜態變量區,修飾函數時,指定函數作用域為文件內部。(K&R時期引入)
register:指定為寄存器變量,建議編譯器將變量存儲到寄存器中使用,也可以修飾函數形參,建議編譯器通過寄存器而不是堆棧傳遞參數。(K&R時期引入)
extern:指定對應變量為外部變量,即標示變量或者函數的定義在別的文件中,提示編譯器遇到此變量和函數時在其他模塊中尋找其定義。(K&R時期引入)
const:指定變量不可被當前線程改變(但有可能被系統或其他線程改變)。(C89標準新增)
volatile:指定變量的值有可能會被系統或其他線程改變,強制編譯器每次從內存中取得該變量的值,阻止編譯器把該變量優化成寄存器變量。(C89標準新增)
流程控制關鍵字
跳轉結構
return:用在函數體中,返回特定值(如果是void類型,則不返回函數值)。(K&R時期引入)
continue:結束當前循環,開始下一輪循環。(K&R時期引入)
break:跳出當前循環或switch結構。(K&R時期引入)
goto:無條件跳轉語句。(K&R時期引入)
if:條件語句,後面不需要放分號。(K&R時期引入)
else:條件語句否定分支(與if連用)。(K&R時期引入)
switch:開關語句(多重分支語句)。(K&R時期引入)
case:開關語句中的分支標記,與switch連用。(K&R時期引入)
default:開關語句中的“其他”分支,可選。(K&R時期引入) [1] 

c語言語法結構

順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。
例如:a=3,b=5,現交換a、b的值,這個問題就好像交換兩個杯子裏面的水,這當然要用到第三個杯子,假如第三個杯子是c,那麼正確的程序為:c=a;a=b;b=c,執行結果是a=5,b=c=3,如果改變其順序,寫成:a=b;c=a;b=c;則執行結果就變成a=b=c=5,不能達到預期的目的,初學者最容易犯這種錯誤。順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算、輸出三步曲的程序就是順序結構,例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s=3.14159*r*r,輸出圓的面積s。不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個複雜的程序,例如分支結構中的複合語句循環結構中的循環體等。
順序結構的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對於要先做判斷再選擇的問題就要使用選擇結構。選擇結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。選擇結構的程序設計方法的關鍵在於構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的選擇語句。選擇結構適合於帶有邏輯或關係比較等條件判斷的計算,設計這類程序時往往都要先繪製其程序流程圖,然後根據程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易於理解。程序流程圖是根據解題分析所繪製的程序執行流程圖
循環結構
循環結構可以減少源程序重複書寫的工作量,用來描述重複執行某段算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、do while循環和for循環。四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環,因為強制改變程序的順序經常會給程序的運行帶來不可預料的錯誤。
特別要注意在循環體內應包含趨於結束的語句(即循環變量值的改變),否則就可能成了一個死循環,這是初學者的一個常見錯誤。
三個循環的異同點:用while和do while循環時,循環變量的初始化的操作應在循環體之前,而for循環一般在語句1中進行的;while循環和for循環都是先判斷表達式,後執行循環體,而do while循環是先執行循環體後判斷表達式,也就是説do while的循環體最少被執行一次,而while循環和for就可能一次都不執行。另外還要注意的是這三種循環都可以用break語句跳出循環,用continue語句結束本次循環,而goto語句與if構成的循環,是不能用break和continue語句進行控制的。
順序結構、分支結構和循環結構並不彼此孤立的,在循環中可以有分支、順序結構,分支中也可以有循環、順序結構,其實不管哪種結構,均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結構相互結合以實現各種算法,設計出相應程序,但是要編程的問題較大,編寫出的程序就往往很長、結構重複多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設計成模塊化結構。
具體內容:
for循環
for循環結構是c語言中最具有特色的循環語句,使用最為靈活方便,它的一般形式為:
for(表達式1;表達式2;表達式3)循環體語句。(其中;不能省略)
表達式1為初值表達式,用於在循環開始前為循環變量賦初值。
表達式2是循環控制邏輯表達式,它控制循環執行的條件,決定循環的次數。
表達式3為循環控制變量修改表達式,它使for循環趨向結束。
循環體語句是在循環控制條件成立的情況下被反覆執行的語句。
但是在整個for循環過程中,表達式1只計算一次,表達式2和表達式3則可能計算多次,也可能一次也不計算。循環體可能多次執行,也可能一次都不執行。
先執行表達式2,然後執行循環結構,最後表達式3,一直這樣循環下去。
for循環語句是c語言種功能最為強大的語句,甚至在一定程度上可以代替其他的循環語句
do
do循環結構,do 1 while(2);的執行順序是1->2->1...循環,2為循環條件。
while
while循環結構,while(1) 2;的執行順序是1->2->1...循環,1為循環條件
以上循環語句,當循環條件表達式為真則繼續循環,為假則跳出循環。

c語言函數

C程序是由一組變量或是函數的外部對象組成的。函數是一個自我包含的完成一定相關功能的執行代碼段。我們可以把函數看成一個“黑盒子”,你只要將數據送進去就能得到結果,而函數內部究竟是如何工作的,外部程序是不知道的。外部程序所知道的僅限於輸入給函數什麼以及函數輸出什麼。函數提供了編制程序的手段,使之容易讀、寫、理解、排除錯誤、修改和維護。
C程序中函數的數目實際上是不限的,如果説有什麼限制的話,那就是,一個C程序中必須至少有一個函數,而且其中必須有一個並且僅有一個以main為名的函數,這個函數稱為主函數,整個程序從這個主函數開始執行。
C語言程序鼓勵和提倡人們把一個大問題劃分成一個個子問題,對應於解決一個子問題編制一個函數,因此,C語言程序一般是由大量的小函數而不是由少量大函數構成的,即所謂“小函數構成大程序”。這樣的好處是讓各部分相互充分獨立,並且任務單一。因而這些充分獨立的小模塊也可以作為一種固定規格的小“構件”,用來構成新的大程序。
C語言發展的那麼多年來,用C語言開發的系統和程序浩如煙海。在發展的同時也積累了很多能直接使用的庫函數
ANSI C提供了標準C語言庫函數
C語言初學者比較喜歡的Turbo C 2.0提供了400多個運行時函數,每個函數都完成特定的功能,用户可隨意調用。這些函數總體分成輸入輸出函數、數學函數、字符串和內存函數、與BIOSDOS有關的函數、字符屏幕和圖形功能函數、過程控制函數、目錄函數等。
Windows系統所提供的Windows SDK中包含了數千個跟Windows應用程序開發相關的函數。其它操作系統,如Linux,也同樣提供了大量的函數讓應用程序開發人員調用。
作為程序員應儘量熟悉目標平台庫函數其功能。這樣才能遊刃有餘地開發特定平台的應用程序。比如作為Windows應用程序的開發者,應儘量熟悉Windows SDK;作為Linux應用程序開發者,應儘量熟悉Linux系統調用和POSIX函數規範。 [1] 

c語言運算符號

比較特別的是,比特右移(>>)運算符可以是算術(左端補最高有效位)或是邏輯(左端補0)位移。例如,將11100011右移3比特,算術右移後成為11111100,邏輯右移則為00011100。因算術比特右移較適於處理帶負號整數,所以幾乎所有的編譯器都是算術比特右移。
運算符的優先級從高到低大致是:單目運算符算術運算符關係運算符邏輯運算符條件運算符賦值運算符(=)和逗號運算符

c語言編程開發

c語言編譯器

GCC,GNU組織開發的開源免費的編譯器
Clang,開源的BSD協議的基於LLVM的編譯器
Visual C++ :: cl.exe,Microsoft VC++自帶的編譯器

c語言集成開發環境

Code::Blocks,開源免費的C/C++ IDE
Dev-C++,可移植的C/C++IDE
Light Table

c語言示例程序

下面是一個在標準輸出設備(stdout)上,印出"Hello, world!"字符串的簡單程序。類似的程序,通常作為初學編程語言時的第一個程序:
#include <stdio.h>
int main(){
    printf("Hello, World! \n");
    return 0;
}
  1. 程序的第一行#include是預處理器指令,告訴C編譯器在實際編譯之前要包含stdio.h文件。
  2. 下一行int main()是主函數,程序從這裏開始執行。
  3. 下一行printf(...)是C中另一個可用的函數,會在屏幕上顯示消息"Hello, World!"。
  4. 下一行return 0;終止main()函數,並返回值0。 [8-9] 
#include <stdio.h>
int main(){
  void move(int *xa,int *xb);
  int a,b;
  printf("請輸入兩個數a,b:");
  scanf_s("%d,%d",&a,&b);
  move(&a,&b);
  printf("a=%d,b=%d\n",a,b);
  return 0;
}
void move(int *xa,int *xb){
  int a;
  a=*xa;
  *xa=*xb;
  *xb=a;
}
1.程序的第三行是對函數的聲明,聲明瞭一個有兩個指針參數的無返回值函數。由於函數的定義在調用函數處下,所以必須進行聲明。
2.第四行是變量的定義,定義了兩個整型變量
3.第六行輸入兩個數,必須以1,0這樣中間有逗號的方式輸入。把兩個數放入變量a,b內。"&"是取地址運算符
4.第七行調用move函數,將兩個變量的值轉換。
5.main函數後就是move函數的定義。
從這個例子可以看出,指針變量可以獲得更多的返回值,這樣是非常方便的。
參考資料
展開全部 收起