當前位置:首頁 » 編程語言 » c語言中有泛型的概念么
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中有泛型的概念么

發布時間: 2023-01-31 09:42:48

① 怎樣在 c語言 實現 C#和C++裡面的 泛型 特

何必呢,你要真用一個不支持泛型的語言來實現泛型其難度是難以想像的,有什麼特殊原因必須用C且必須用泛型么?
對於特定應用,泛型沒有什麼用。泛型主要用於寫通用庫的

② C語言中++c與c++有什麼區別

++c 是先賦值後使用,c++是先使用後賦值。
對於單純的復制語句,兩個沒差別。對於復合語句,就有差別了。比如:
i=3;
對於 while(++i<4),i先加1,用i=4作判斷,
結果是假,跳過程序體。
對於 while(i++<4),先取i=3作判斷,結果是真,進入程序體,然後i加1,用i=4,在程序體里作運算。

③ c中泛型什麼時候替換

c語言中方法被聲明時。
在c語言中如果方法被聲明也就是被定義時作為泛型類或者泛型介面的一部分,程序員就可以使用他們自己的泛型類型來替換原有的類型。
泛型的概念代表了對類型的抽象。它是一個非常強大的概念,它允許開發抽象演算法和數據結構,並提供實體類型以供後續操作。

④ C語言 泛型動態數組

泛型動態數組

附上源碼: 泛型動態數組源碼
https://github.com/chenfanfang/data_structure

array.h 頭文件

array.c 函數實現

測試用例1

測試用例2

⑤ C++相對C的主要特點和發展

簡單地說,C++和C的主要區別在於,C是面向過程的,而C++是面向對象的,C++主要比C多了繼承,多態,模板等特性;在發展方向上,C++傾向於用來開發一些大型的軟體,而C傾向於用來開發和硬體有關同時又要求效率的過程式軟體開發,在使用人數上,目前C占絕對的優勢。

下面是詳細的介紹:
1.C++和C的關系:
C語言之所以要起名為「C」,是因為它是主要參考那個時候的一門叫B的語言,它的設計者認為C語言是B語言的進步,所以就起名為C語言;但是B語言並不是因為之前還有個A語言,而是B語言的作者為了紀念他的妻子,他的妻子名字的第一個字母是B; 當C語言發展到頂峰的時刻,出現了一個版本叫C with Class,那就是C++最早的版本,在C語言中增加class關鍵字和類,那個時候有很多版本的C都希望在C語言中增加類的概念;後來C標准委員會決定為這個版本的C起個新的名字,那個時候徵集了很多種名字,最後採納了其中一個人的意見,以C語言中的++運算符來體現它是C語言的進步,故而叫C++,成立了C++標准委員會。

2.C++的發展和特點:
• C++設計成靜態類型、和C同樣高效且可移植的多用途程序設計語言。
• C++設計成直接的和廣泛的支援多種程序設計風格(程序化程序設計、資料抽象化、面向對 象程序設計、泛型程序設計)。
• C++設計成給程序設計者更多的選擇,即使可能導致程序設計者選擇錯誤。
• C++設計成盡可能與C兼容,籍此提供一個從C到C++的平滑過渡。
• C++避免平台限定或沒有普遍用途的特性。
• C++不使用會帶來額外開銷的特性。
• C++設計成無需復雜的程序設計環境。
出於保證語言的簡潔和運行高效等方面的考慮,C++的很多特性都是以庫(如STL)或其他的形式提供的,而沒有直接添加到語言本身里。關於此類話題,C++之父的《C++語言的設計和演化》 里做了詳盡的陳述。

3..兩者的效率差別:
C++與C的效率往往相差在正負5%之間。所以有人認為在大多數場合C++ 完全可以取代C語言(然而我們在單片機等需要謹慎利用空間、直接操作硬體的地方還是要使用C語言)。

4.C是C++的子集:
C++包括:
1、C子語言。C++支持C語言的幾乎全部功能,在語法上與C語言僅有極微妙的差別(如括弧表達式的左右值性,具體請參考C++標准文獻)。
2、面向對象的C++(Objective C++)。C++語言原本不具備面向對象的設計功能,然而隨著面向對象編程的概念的提出以及如Java等語言的發展成熟,C++語言也開發出了支持面向對象功能的版本,現在編程者常用的VC++就是一種面向對象的語言。
3、泛型編程語言。C++強大(但容易失控的)模板功能使它能在編譯期完成許多工作,從而大大提高運行期效率。
4、STL(C++標准模板庫,Standard Template Library)。隨著STL的不斷發展,它已經逐漸成為C++程序設計中不可或缺的部分,其效率可能比一般的native代碼低些,但是其安全性與規范性使它大受歡迎。
此外,包含在TR1等中的C++0x將實現的新功能在開發和測試中。

⑥ 怎樣在 C語言 實現 C#和C++裡面的 泛型 特性

用void *跟length參數來操作數據,達到泛型的目的!

⑦ 什麼是C語言C++C#E語言還有匯編

把c++學透了?那這些呢?
1、泛型
2、模版
簡單點的學習歷程:

"學習完C語言和C++"
這兩門沒一年半載年, 你可能連語法都玩不熟,
況且會語法和會運用更是兩個概念.

從發展趨勢看, 這兩門語言越來越低層,
所以對數據結構和演算法的要求更高, 數學扮演的角色也更重要.

你如果對這方面不感興趣, 趁早換java, C#等,
反之, 我建議你, 數據結構和演算法要學扎實,
還要掌握些SDK編程, 了解系統內部的運作方式,
還有COM, 匯編也建議研究下.

總之, 越底層, 你得到的輔助越少, 需要自己實現的東西越多,
對程序員的素質要求越高, 當然如果你實力足夠, 待遇自然
也比應用程序員更高, 努力吧.

補充一下我學的知識吧:
1,從最底層的說起吧,我是學自動化的,對於底層的單片機,匯流排之類的比較熟悉,所以學習計算機,在看計算機體系結構方面的東西就比較順暢。
2,匯編語言,是必須要學習的,這個是了解CPU和電腦最好的渠道。
3,操作系統的知識,整個讓你知道,在我們一般人寫程序的下面還有一個強大的操作系統平台,提供給我們軟體支持。
4,編程語言,我個人學習的是C,C++這么一個思路。個人感覺C++比C要復雜很多,特別是我上面提到的范型和模板之類的,特別復雜,現在也是有空才看看相關的書。
5,平台相關的知識了,嵌入式系統方面的東西了,比如搞windows開發,我用的是MFC和VC開發的,當然如果你是用Linux開發的,可能有另外更多的選擇。
6,設計模式,演算法問題,這個東西非常重要,也就是程序的設計思路和框架問題,你有空,可以學習UML之類的東西。

7,最後一個,就是可以常常去各個論壇之類和人交流,一方面可以補充自己的不足,一方面幫助別人的同時,自己也有成長。

⑧ 純C語言實現,泛型數組(靜態數組的方式),關鍵是在分配內存時候,如何傳遞類型參數。(可惜我沒有分)

不要分,盡管討論!在32位機里指針都是4位元組。但為了書寫標准化和移植,還是用sizeof(ptype)*n作為malloc的參數為好。其中n是需要分配多少個ptype型指針的個數。

⑨ 為什麼說C語言是結構化的語言

雖然從嚴格的學術觀點上看,C語言是塊結構(b l o c k - s t r u c t u r e d)語言,但是它還是常被稱為結構化語言。這是因為它在結構上類似於A L G O L、P a s c a l和M o d u l a - 2(從技術上講,塊結構語言允許在過程和函數中定義過程或函數。用這種方法,全局和局部的概念可以通過「作用域」規則加以擴展,「作用域」管理變數和過程的「可見性」。因為C語言不允許在函數中定義函數,所以不能稱之為通常意義上的塊結構語言)。

結構化語言的顯著特徵是代碼和數據的分離。這種語言能夠把執行某個特殊任務的指令和數據從程序的其餘部分分離出去、隱藏起來。獲得隔離的一個方法是調用使用局部(臨時)變數的子程序。通過使用局部變數,我們能夠寫出對程序其它部分沒有副作用的子程序。這使得編寫共享代碼段的程序變得十分簡單。如果開發了一些分離很好的函數,在引用時我們僅需要知道函數做什麼,不必知道它如何做。切記:過度使用全局變數(可以被全部程序訪問的變數)會由於意外的副作用而在程序中引入錯誤。

結構化語言比非結構化語言更易於程序設計,用結構化語言編寫的程序的清晰性使得它們更易於維護。這已是人們普遍接受的觀點了。C語言的主要結構成分是函數C的獨立子程序。

在C語言中,函數是一種構件(程序塊),是完成程序功能的基本構件。函數允許一個程序的諸任務被分別定義和編碼,使程序模塊化。可以確信,一個好的函數不僅能正確工作且不會對程序的其它部分產生副作用。

⑩ STL文件導入到CARTIL

導入步驟:
第1步:首先運行Sketchup,然後打開所需文件;
第2步:單擊文件file-導出export-3D模型;
第3步:在文件格式中選擇「3ds」;
第4步:然後單擊導出export,單擊確定「OK」;
第5步:然後打開軟體Meshlab,接著單擊打開圖標1,然後選擇剛才導出的3ds格式文件;
第6步:單擊打開;
第7步:單擊保存圖標1,然後選擇文件格式stl;
第8步:其他選項默認,然後單擊確定;
第9步:打開CARTIL軟體,然後單擊文件-打開(快捷鍵ctrl+o),選擇剛才保存的stl文件,單擊確定。
標准模板庫系(stl)由Alexander Stepanov創造於1979年前後,這也正是比雅尼·斯特勞斯特魯普創造C++的年代。雖然Musser於1971年開始即在計算機幾何領域發展並倡導某些泛型程序設計觀念,但早期並沒有任何編程語言支持泛型程序設計。第一個支持泛型概念的語言是Ada。Alex和Musser曾於1987開發出一套相關的Ada library。標准模板庫設計人Stepanov早期從事教育工作,1970年代研究泛型程序設計,那時他與其同事一起在GE公司開發出一個新的程序語言—Tecton。1983年,Stepanov先生轉至Polytechnic大學教書,繼續研究泛型程序設計,同時寫了許多Scheme的程序,應用在graph與network的演算法上,1985年又轉至GE公司專門教授高階程序設計,並將graph與network的Scheme程序,改用Ada寫,用了Ada以後,他發現到一個動態(dynamically)類型的程序(如Scheme)與強制(strongly)類型的程序(如Ada)有多麼的不同。在動態類型的程序中,所有類型都可以自由的轉換成別的類型,而強制類型的程序卻不能。但是,強制類型在出錯時較容易發現程序錯誤。1989年Stepanov先生轉至HP公司運行開發泛型程序庫的工作。此時,他已經認識C語言中指針(pointer)的威力,他表示一個程序員只要有些許硬體知識,就很容易接受C語言中指針的觀念,同時也了解到C語言的所有數據結構均可以指針間接表示,這點是C與Ada、Scheme的最大不同。Stepanov並認為,雖然C++中的繼承功能可以表示泛型設計,但終究有個限制。雖然可以在基礎類型(superclass)定義演算法和介面,但不可能要求所有對象皆是繼承這些,而且龐大的繼承體系將減低虛擬(virtual)函數的運行效率,這便違反的前面所說的「效率」原則。到了C++模板觀念,Stepanov參加了許多有關的研討會,與C++之父Bjarne討論模板的設計細節。如,Stepanov認為C++的函數模板(function template)應該像Ada一樣,在聲明其函數原型後,應該顯式的聲明一個函數模板之實例(instance);Bjarne則不然,他認為可以通過C++的重載(overloading)功能來表達。