C語言中out和ref的區(qū)別是什么?
ref:相當(dāng)于c語言的引用參數(shù) 實(shí)參和形參一起變。
out:多用于輸出參數(shù) 就是在return之前必須給out標(biāo)示的參數(shù)賦值。
C語言的基本特性:
1、C是高級(jí)語言:它把高級(jí)語言的基本結(jié)構(gòu)和語句與低級(jí)語言的實(shí)用性結(jié)合起來。C 語言可以像匯編語言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。
2、C是結(jié)構(gòu)式語言:結(jié)構(gòu)式語言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于編碼、維護(hù)以及調(diào)試。C 語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。
3、C語言功能齊全:具有各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。而且計(jì)算功能、邏輯判斷功能也比較強(qiáng)大,可以實(shí)現(xiàn)決策目的的游戲。
4、C語言適用范圍大:適合于多種操作系統(tǒng),如Windows、linux、DOS、UNIX等等;也適用于多種機(jī)型。C語言對(duì)編寫需要硬件進(jìn)行操作的場(chǎng)合,優(yōu)于其它高級(jí)語言,有一些大型應(yīng)用軟件也是用C語言編寫的。
5、C語言應(yīng)用指針:可以直接進(jìn)行靠近硬件的操作,但是C的指針操作不做保護(hù),也給它帶來了很多不安全的因素。C++在這方面做了改進(jìn),在保留了指針操作的同時(shí)又增強(qiáng)了安全性,受到了一些用戶的支持,但是,由于這些改進(jìn)增加語言的復(fù)雜度,也為另一部分所詬病。java則吸取了C++的教訓(xùn),取消了指針操作,也取消了C++改進(jìn)中一些備受爭(zhēng)議的地方,在安全性和適合性方面均取得良好的效果,但其本身解釋在虛擬機(jī)中運(yùn)行,運(yùn)行效率低于C++/C。一般而言,C,C++,java被視為同一系的語言,它們長(zhǎng)期占據(jù)著程序使用榜的前三名。
6、C語言文件由數(shù)據(jù)序列組成:可以構(gòu)成二進(jìn)制文件或文本文件常用的C語言IDE(集成開發(fā)環(huán)境)有Microsoft Visual C++,Dev-C++,Code::Blocks,Borland C++,Watcom C++,Borland C++ Builder,GNU DJGPP C++,Lccwin32 C Compiler 3.1,High C,Turbo C,C-Free,win-tc,xwxxxcode-style(mac os x)等。
新特性
1、對(duì)齊處理(Alignment)的標(biāo)準(zhǔn)化(包括_Alignas標(biāo)志符,alignof運(yùn)算符,aligned_alloc函數(shù)以及<stdalign.h>頭文件。
2、_Noreturn 函數(shù)標(biāo)記,類似于 gcc 的 __attribute__((noreturn))。
3、_Generic 關(guān)鍵字。
4、多線程(Multithreading)支持,包括:_Thread_local存儲(chǔ)類型標(biāo)識(shí)符,<threads.h>;頭文件,里面包含了線程的創(chuàng)建和管理函數(shù)。
5、增強(qiáng)的Uniwxxxcode-style的支持,基于C Uniwxxxcode-style技術(shù)報(bào)告ISO/IEC TR 19769:2004,增強(qiáng)了對(duì)Uniwxxxcode-style的支持。包括為UTF-16/UTF-32編碼增加了char16_t和char32_t數(shù)據(jù)類型,提供了包含uniwxxxcode-style字符串轉(zhuǎn)換函數(shù)的頭文件<uchar.h>.
6、刪除了 gets() 函數(shù),使用一個(gè)新的更安全的函數(shù)gets_s()替代。
7、增加了邊界檢查函數(shù)接口,定義了新的安全的函數(shù),例如 fopen_s(),strcat_s() 等等。
8、增加了更多浮點(diǎn)處理宏。
9、匿名結(jié)構(gòu)體/聯(lián)合體支持,這個(gè)在gcc早已存在,C11將其引入標(biāo)準(zhǔn)。
10、靜態(tài)斷言(Static assertions),_Static_assert(),在解釋 #if 和 #error 之后被處理。
11、新的 fopen() 模式,(“…x”),類似 POSIX 中的 O_CREAT|O_EXCL,在文件鎖中比較常用。
12、新增 quick_exit() 函數(shù)作為第三種終止程序的方式。當(dāng) exit()失敗時(shí)可以做最少的清理工作。
13、_Atomic類型修飾符和<stdatomic.h>頭文件。