<kbd id="daqct"></kbd>

  • <nav id="daqct"></nav>
    <wbr id="daqct"><pre id="daqct"></pre></wbr>
    <wbr id="daqct"></wbr>
    <form id="daqct"><th id="daqct"></th></form>
    更多課程 選擇中心

    C/C++培訓
    達內IT學院

    400-111-8989

    學習C/C++語言常見問題解答

    • 發布:C++培訓
    • 來源:C++職場
    • 時間:2017-05-25 14:56

    1.學習C++是否必須先了解C?

    困難地描述更多的事物,因此所需的訣竅就更少,而且可利用的庫也要比C多。所要學習的C++子集并不是C的全部。

    2.怎樣開始學習C++?

    很顯然,這非常依賴于你已經掌握的知識和你學習C++的動機。如果你是個編程新手,我強烈建議你找一位有經驗的程序員來幫助你,否則概念性的錯誤以及程序實際執行過程中所發生的問題將使你的學習大受挫折。

    你需要一本C++學習教程,該教程起到在線幫助文檔的作用,其原因是帶有足夠多代碼的編程語言和庫文檔對概念的解釋不見得就很清楚。

    當選擇一本書時,要選將標準C++和標準庫結合在一塊描述的書.如,象字符串的輸入應這樣:

    string s;// 標準C++風格

    cin>>s;

    而不要象這樣:

    char s[MAX]; /* 標準C風格 */

    scanf("%s",s);

    多看看有豐富編程經驗的程序員推薦的書,記住,對任何人來說沒有哪一本是最好的。為了寫出合乎習慣的C++語句,應避免簡單地用你以前學過的語言的風格寫C++代碼,僅僅通過改變句子排列順序是得不到什么進步的。看看《Learning Standard C++ as a New Language》一書中關于如何學習C++的討論內容。

    3.改進C++程序的最好方法是什么?

    這我沒法說,主要取決于你如何用它,有很多人都輕視抽象類和模板。相反他們過多地使用casts和宏。

    4.對于小的程序C優于C++,對嗎?

    我沒有這樣的觀點,我還未見過在不缺好的C++編譯器的情況下,有優于C++的C小程序。

    5.C是C++的子集嗎?

    從嚴格的數學意義上講,C不是C++的一個子集。有些程序是有效的C程序卻不是有效的C++程序,甚至在一些代碼的編寫方面,C與C++也有不同的意思。不過C++支持C所支持的每一種編程技術。每個C程序從本質上來講也都可以相同的方式用C++來編寫,并且有著相同的時間和空間效率。在幾小時內將幾萬行符合ANSI標準的C程序轉換成C++風格的C++程序是常見的。因此C++是ANSI C的超集就像ANSI C是K&R C的超集而ISO C++又是C++的超集一樣。

    一般的C程序都符合C++語法,比如Kernighan和Ritchie合著的《The C Programming Language》(第二版)中的任何一個例子也都是C++程序。

    有關C/C++兼容的問題例子:

    int main()

    {

    double sq2=sqrt(2); /* 不是C++程序:調用了一個未聲明的函數 */

    int s=sizeof('a'); /* 在C中用 sizeof(int) . */

    }

    調用一個未聲明的函數是C中不好的風格而在C++中則是不合法的。

    void f();

    void g()

    {

    f(2);

    }

    在C語言中 void類型的指針能被轉換為任意類型的指針,分配內存的典型做法是調用函數malloc().....

    void * malloc(size_t);

    void f(int n)

    {

    int *p=malloc(n*sizeof(char)); /*非C++用法,C++是用new分配內存的*/

    char c;

    void* pv=&c;

    int *pi=pv; /*隱含有將void類型指針轉換為int類型的指針,在C++中不用*/

    }

    注意隱含地將void類型指針轉換為int類型的指針會引起潛在的alignment錯誤。

    從C轉換到C++時,需注意C++的關鍵字要比C來的多

    int class =2; /* 在C中是正確的, 在C++中則有語法錯誤*/

    int virtual=3; /* 在C中是正確的, 在C++中則有語法錯誤*/

    除了一些象上面所舉的例子外(《The C++ Programming Language》(第三版)的附錄B中詳細列出了標準C++與C的這類區別)C++是C的一個超集。

    6. C++與C有什么區別?

    C++是C的直接后裔,幾乎將C當作一個子集而差不多保留了C的全部內容,C++提供了更強的類型檢查機制并直接支持范圍更廣的編程風格。在這種意義上說C++是"更好的C",它支持C語言的編程風格并有更好的類型檢查(又不失其原有的高效率)。類似的,ANSI C 是比K&R C更好的C,另外C++支持數據抽象,面向對象的編程和類編程(請見《The C++ Programming Language》(第3版),可以從網上下載的附錄B中討論了兼容性問題。)

    我還未曾見過哪一個程序用C表達比用C++來得更好(我認為不存在這樣一個C程序,其結構與C++完全等價)。然而,在某些情況下由于C++得不到充分的支持,而使用C更有利。

    要理解有關C++的設計以及C++與C的關系的一些討論,請見《The Design and Evolution of C++》。

    7.為什么用C++產生的“Hello World”的程序代碼要比用C產生的長十倍?

    在我的機器上不會有這種現象,在你的機器上也不會有。實際上,在我的機器“hello world”程序的C++版本的目標代碼比C要小。沒有語言方面的原因使得一種版本的程序代碼比另一種的要長。只有一種情況,那就是實現一種語言的人是如何組織標準庫的。如果一種版本要比另一版本大得多,則要向大的一方的實現者提出所發現的問題。

    8.什么是面向對象的程序設計(OOP)?

    面向對象的設計方法是一種進行程序設計的新方法,它吸取了結構化程序設計的先進思想,為解決程序結構過于復雜而產生。它的思想是在進行程序設計時,把整個問題分成由相關部分組成的組,每個組考慮和組相關的代碼和數據,同時這些分組將按層次關系組織起來,每個分組轉換為對象的獨立單元。面向對象的程序設計語言都具有多態性、繼承性、封裝性等特點。

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:2017年C++就業前景分析
    下一篇:從C/C++語言初學者到高級工程師,學習C/C++語言必讀書籍推薦

    幾個C語言經典基礎算法(含代碼)

    不得不知道的八個C語言面試題

    C/C++后臺開發面試難不難,京東二面

    C/C++后臺開發面試難不難,來看看京東

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    欧美三级片,白洁外传,第四色播日韩AV第一页,啪啪免费观看大全av 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>