『壹』 c語言為什麼能跨平台或是如何跨平台的
c語言能跨平台是因為各個平台有相應的c編譯器,只要源代碼相同,編譯器編譯出來的二進制文件就會實現相同的功能,但是這些二進制文件本身是不一樣的
exe就是2進制的,但不完全是原來程序的代碼,還包括了windows系統的一些代碼
科普一下,C最早是出現在Unix下的,Windows那都是後話了,C出現的時候Windows還沒開發出來呢。
C有個比較特別的稱呼,叫中級語言,因為它有高級語言的特性又能跟底層硬體很好的交互所以才有這么個說法。DOS時代在C裡面嵌上一段匯編直接從並口讀個數上來那是很流行的,現在沒見誰在VC裡面這么干吧。Windows也不讓啊。想訪問硬體怎麼也得通過驅動。
說遠了,C在多種平台下可以實現代碼級的共享,跨平台就需要重新編譯了。
但是,我也見過有的軟體是可以在多種平台上運行了,可能有什麼特別的技術,可以先識別一下操作系統,再運行相應的代碼。這個應該是在編譯的時候有特殊的技巧。
C編譯、連接器網上有現成的代碼,一般不是很專業的技術人員沒有去研究它。我一直把玩編譯原理的視為天人,有能力把編譯原理那本書看完的就很不容易了,再要能領會其中精要那就成才了,能把龍書虎書鯨書都搞明白的那就是一流專家了。
『貳』 VC是平時說的C語言么
不是,VC是微軟出的一款集成開發microsoft
Visual
C++工具,可以運行C和C++是使用c++的一個
開發平台
,是Windows平台上的
C++編程
環境.有些軟體就是這個編出來的,因為是微軟出的所以與系統的兼容性較高,是比較好用的
現在常用的是
VC++6.0
『叄』 C語言中兩個*是什麼意思比如int**p
2 個*號,聲明指向指針的指針。它的意思是「它是一個整數,這個整數指向某個內存地址,一次訪問sizeof(int)長度,其值是一個整數,那個整數值指向某個內存地址,一次訪問sizeof(BTree)長度。
指針可以指向一份普通類型的數據,例如 int、double、char 等,也可以指向一份指針類型的數據,例如 int *、double *、char * 等。如果一個指針指向的是另外一個指針,我們就稱它為二級指針,或者指向指針的指針。
(3)c語言的稱呼擴展閱讀
在計算機科學中,指針(Pointer)是編程語言中的一個對象,利用地址,它的值直接指向(points to)存在電腦存儲器中另一個地方的值。由於通過地址能找到所需的變數單元,可以說,地址指向該變數單元。因此,將地址形象化的稱為「指針」。
意思是通過它能找到以它為地址的內存單元。 在高級語言中,指針有效地取代了在低級語言,如匯編語言與機器碼,直接使用通用暫存器的地方,但它可能只適用於合法地址之中。指針參考了存儲器中某個地址,通過被稱為反參考指針的動作,可以取出在那個地址中存儲的值。
作個比喻,假設將電腦存儲器當成一本書,一張內容記錄了某個頁碼加上行號的便利貼,可以被當成是一個指向特定頁面的指針;根據便利粘貼面的頁碼與行號,翻到那個頁面,把那個頁面的那一行文字讀出來,就相當於是對這個指針進行反參考的動作。
在信息工程中指針是一個用來指示一個內存地址的計算機語言的變數或中央處理器(CPU)中寄存器(Register)【用來指向該內存地址所對應的變數或數組】。指針一般出現在比較接近機器語言的語言,如匯編語言或C語言。面向對象的語言如Java一般避免用指針。
指針一般指向一個函數或一個變數。在使用一個指針時,一個程序既可以直接使用這個指針所儲存的內存地址,又可以使用這個地址里儲存的函數的值。
另外,指針也指鍾表中用來指示對應時間的部件。
『肆』 c語言為什麼能跨平台或者是如何跨平台的
c語言能跨平台是因為各個平台有相應的c編譯器,只要源代碼相同,編譯器編譯出來的二進制文件就會實現相同的功能,但是這些二進制文件本身是不一樣的。
exe就是2進制的,但不完全是原來程序的代碼,還包括了windows系統的一些代碼。
科普一下,C最早是出現在Unix下的,Windows那都是後話了,C出現的時候Windows還沒開發出來呢。
C有個比較特別的稱呼,叫中級語言,因為它有高級語言的特性又能跟底層硬體很好的交互所以才有這么個說法。DOS時代在C裡面嵌上一段匯編直接從並口讀個數上來那是很流行的,現在沒見誰在VC裡面這么干吧。Windows也不讓啊。想訪問硬體怎麼也得通過驅動。
C在多種平台下可以實現代碼級的共享,跨平台就需要重新編譯了。
但是,我也見過有的軟體是可以在多種平台上運行了,可能有什麼特別的技術,可以先識別一下操作系統,再運行相應的代碼。這個應該是在編譯的時候有特殊的技巧。
C編譯、連接器網上有現成的代碼,一般不是很專業的技術人員沒有去研究它。我一直把玩編譯原理的視為天人,有能力把編譯原理那本書看完的就很不容易了,再要能領會其中精要那就成才了,能把龍書虎書鯨書都搞明白的那就是一流專家了。
『伍』 C語言中表,樹,棧是什麼
表,樹,棧並不屬於C語言,其它語言也有表,樹,棧
單純在C語言中,他們也只是一種數據結構的稱呼,並不是一種現成的代碼或函數
實現方法就有好多種,比如用數組和指針,都有分別的程序實現,可以去看《數據結構》C語言描述
『陸』 C語言為什麼叫做C語言而不叫A,B,D..Z等語言
C語言的祖先是BCPL語言。 1967年,劍橋大學的 Martin Richards 對CPL語言進行了簡化,於是產生了BCPL(Basic Combined Programming Language)語言。 1970年,美國貝爾實驗室的 Ken Thompson。以BCPL語言為基礎,設計出很簡單且很接近硬體的B語言(取BCPL的首字母)。並且他用B語言寫了第一個UNIX操作系統。 在1972年,美國貝爾實驗室的 D.M.Ritchie 在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。 為了使UNIX操作系統推廣,1977年Dennis M.Ritchie發表了不依賴於具體機器系統的C語言編譯文本《可移植的C語言編譯程序》。 1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchie合著了著名的《The C Programming Language》一書。通常簡稱為《K&R》,也有人稱之為《K&R》標准。但是,在《K&R》中並沒有定義一個完整的標准C語言,後來由美國國家標准化協會(American National Standards Institute)在此基礎上制定了一個C語言標准,於一九八三年發表。通常稱之為ANSI C。 K&R第一版在很多語言細節上也不夠精確,對於pcc這個「參照編譯器」來說,它日益顯得不切實際;K&R甚至沒有很好表達它所要描述的語言,把後續擴展扔到了一邊。最後,C在早期項目中的使用受商業和政府合同支配,這意味著一個認可的正式標準是必需的。因此(在M. D. McIlroy的催促下),ANSI於1983年夏天,在CBEMA的領導下建立了X3J11委員會,目的是產生一個C標准。X3J11在1989年末提出了一個他們的報告[ANSI 89],後來這個標准被ISO接受為ISO/IEC 9899-1990。 1990年,國際標准化組織ISO(International Organization for Standards)接受了89 ANSI C 為I SO C 的標准(ISO9899-1990)。1994年,ISO修訂了C語言的標准。 1995年,ISO對C90做了一些修訂,即「1995基準增補1(ISO/IEC/9899/AMD1:1995)」。1999年,ISO又對C語言標准進行修訂,在基本保留原來C語言特徵的基礎上,針對應該的需要,增加了一些功能,尤其是對C++中的一些功能,命名為ISO/IEC9899:1999。 2001年和2004年先後進行了兩次技術修正。 目前流行的C語言編譯系統大多是以ANSI C為基礎進行開發的,但不同版本的C編譯系統所實現的語言功能和語法規則又略有差別。 2011年12月,ISO正式公布C語言新的國際標准草案:ISO/IEC 9899:2011。 新的標准修提高了對C++的兼容性,並將新的特性增加到C語言中。新功能包括支持多線程, 基於ISO/IEC TR 19769:2004規范下支持Unicode,提供更多用於查詢浮點數類型特性的宏定義和靜態聲明功能。
『柒』 關於C語言源程序與源文件的問題,比如從頭到尾整個一個程序稱呼為什麼,希望說的通俗點,謝謝了
一個大的程序叫工程(方便管理,查找,組織)
一個工程裡面會包含很多個文件,每個文件里會包含不同的函數體,當然也可以都放一個文件,只不過這個文件編輯的時侯很要命,單個文件內容太多對編程者是噩夢。
每個文件包含的函數要自己組織。
之所以叫工程,因為現在很多集成的系統都這么叫,就是讓工程里的所有文件交給集成系統去管理,你自己不用太關心文件之間的關系。
不理解的話,就試試自己建個目錄就叫工程,然後手動在目錄里添加不同的文件,再編寫編譯,鏈接的批處理,如果文件有增減都自己去維護目錄里的文件,再去修改批處理,你就明白工程是幹啥的了
『捌』 (1)用C語言指令寫出的程序稱呼為源程序,其擴展名是【】;對源程序進行編譯後,生成的文件擴展名是【
.c,..obj..exe..exe,變數