9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦>知識大全>知識百科>百科知識>

c語言基礎知識總結

時間: 謝君787 分享

  C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。以下是由學習啦小編整理關于c基礎知識總結的內容,希望大家喜歡!

  c語言基礎知識總結

  1.C語言中,變量必須先聲明后使用,即一個程序塊(花括號對)中所有臨時變量必須在第一條可執行語句之前全部聲明,而不能像C++那樣隨用隨聲明;

  2.C語言中參數傳值傳遞形參,即為參數的拷貝,此與C++/JAVA相同,同時值得注意,ANSI C不支持引用,此與C++/JAVA有區別,那么要對參數進行修改只能使用指針方式(指針傳值指針本身仍是形參,要修改指針本身那必須使用雙重指針);

  3.C語言默認類型為int,即參數無類型或函數無返回值類型聲明,則認為是int(貌似一些編譯器不支持),同時不建議使用該特性;

  4.無參數的函數聲明應當使用void表明,否則C語言按照老式聲明方法忽略參數類型檢查;

  5.全局變量建議全大寫,局部變量建議全小寫,內部變量31個字符有效,外部變量不區分大小寫,僅6個字符有效,所以必須保持唯一性;

  6.ANSI C是按照多字節實現的,UNICODE是后來發展的,所以有char/WCHAR,與.NET中char直接是雙字節有區別,在C#中導入dll時值得注意;

  7.C語言支持枚舉,并且枚舉和int直接強制類型轉換即可,比.NET方便;

  8.#define聲明宏定義直接在編譯時替換,不進行類型檢查,const聲明常量則可以進行類型檢查;

  9.運算符的優先級記憶比較麻煩,還是()可靠;

  10.goto并不是一無是處,在不考慮程序可讀性的情況下可能獲得更高的效率;

  11.函數實際也可以與特殊的類型相對應,那樣對于理解函數指針比較方便,函數為外部類型;

  12.static用于全局變量和函數則限定該變量和函數的使用范圍僅為該源文件(從而無需考慮與其他源文件不得重名),用于函數內部變量則該變量的內存分配和回收不再同于普通臨時變量(調用函數生成,函數返回銷毀),而是一直存在于靜態變量區,從而可以保存一些狀態;

  13.頭文件的作用體現在調用其他源文件時不需要再次寫函數定義,所以實現函數是不需要頭文件的,調用時才需要,可以采用富頭文件定義一大組接口,然后使用多個源文件分別實現;

  14.寄存器變量使用register聲明,僅適用于使用頻率高的局部變量(含形參)(受限于底層硬件,不一定會被分配到寄存器,但是這么寫不影響效率);

  15.全局變量和靜態變量默認初始化為全零且僅初始化一次,局部變量默認初始化為未定義且每次都會重新初始化;

  16.遞歸調用的方法一般比較緊湊,但是每次調用會單獨維護調用的堆棧,所以效率不是最高;

  17.#include的作用體現于將一些內容避免重新寫一遍(主要是類型、函數和外部變量定義),所以實際上不一定為h文件;

  18.\表示一行尚未結束,對于定義長的字符串和define比較有用;

  19.函數調用的執行順序不確定,所以對于a()+b()這樣函數中使用相同變量并且改變其值的需要借助臨時變量處理,防止不同實現的調用順序不一致;

  20.##用于宏定義中連接前后兩個部分,如cat(a, b)   a ## b;

  21.指針是C/C++的重要內容,當然也是雙面刃,用好了很方便而且高效,用不好那就造成程序不穩定;

  22.使用va_list, va_start, va_arg, va_end來定義可變參數的函數,具體可以參見http://blog.csdn.net/flyoxs/article/details/4099317,我的理解是通過va_start函數中的第一個不變參數將va_list指向參數列表(函數調用的棧中),然后通過va_arg獲取每個參數并將va_list移動指定類型的長度,最后則通過va_end完成必要的回收工作,需要指出的是va_arg沒有結束邊界,所以比較有效的方式有兩種,一種對于參數類型一致,則可以第一個參數指出后續參數的總數,然后依次獲取,另一種對于不同類型的參數混用,則可以通過類型標識+參數配對的方式進行使用(第一個參數依然可以指定數量,當然也可以檢查標識),從而避免最后讀取無效的參數,對于可變參數僅支持int和double兩種類型(參數未限定類型,故按照舊式聲明理解)以及指針類型;

  23.函數指針是用來在C語言中實現動態調用的比較有效的方式

  24.結構體用作參數依然是拷貝為形參傳遞,這點與JAVA中全部對象都是類有區別(類的對象通過引用傳值,C#支持struct),所以對于大的結構體事宜使用指針傳遞,而對于小的結構體拷貝傳值效率并不低;

  25.代碼中字符數組為靜態常量,對其操作無效,程序塊中數組的聲明是可以自動回收的,通過malloc/calloc分配的內存為堆內存,需要自行通過free回收;

  c語言進制知識總結

  1.什么是進制

  進制是一種計數的方式,常用的有二進制、八進制、十進制、十六進制。任何數據在計算機內存中都是以二進制的形式存放的。

  我對進制的個人理解,二進制數是以2為計算單元,滿2進1位的數;八進制數是以8為計算單元,滿8進1位的數。

  對于任何一個數字,我們都可以用不同的進制來表示,比如,十進制數12,用二進制表示為1100,用八進制表示為14,用十六進制表示為0xC。

  2.進制的轉換規則

  遵循滿進制值進1位,個位數變為0的原理,下面我們以十進制數18為例,對1-18中每一個數值轉換各種進制做一個詳細說明

  轉二進制:

  1小于2,無需進1位,1的二進制值是1

  2為二進制值1后面一個數,由于1+1滿2,需要進1位,個位數變為0,所以2的二進制值是10

  3為二進制值10后面一個數,由于11的個位數1小于2,無需進1位,所以3的二進制值是11

  4為二進制值11后面一個數,由于11的個位數1+1滿2,需要進1位,而二進制值11的位數1+1又滿2,所以位數加1,最終轉換結果為100

  轉換思路:二進制值11+1 ->10+(1+1)(個位等于2,進1位,個位數變為0) ->(1+1)+0(位數滿2,進1位) -> 100

  以此類推,最終十進制數18的二進制轉換結果是10010

  轉八進制:

  1-7小于8,無需進1位,1-7的八進制由1-7表示

  8為八進制值7后面一個數,由于7+1滿8,需要進1位,個位數變為0,所以8的八進制值是10

  以此類推,最終十進制數18的八進制轉換結果是22

  轉十六進制

  十六進制中,個位數1-15分別為1 2 3 4 5 6 7 8 9 a b c d e f (a=10....f=15)

  16為十六進制值c后面1個數,由于c+1滿16,需要進1位,個位數變為0,所以16的十六進制是10。

  最終十進制數18的十六進制轉換結果是12
看過“c語言基礎知識總結“的人還看了:

1.c語言程序設計心得3篇

2.計算機c語言基礎知識

3.c語言公共基礎知識考點

4.c語言實習心得

5.c語言實訓報告范文3篇

1212975 主站蜘蛛池模板: 亚洲狠狠爱一区二区三区| 暖暖影院日本高清...免费| 乱人伦无码中文视频在线| 开心激情站一区二区三区| 国产精品久久久福利| 老司机性色福利精品视频| 亚洲AVAV天堂AV在线网阿V| 国产一级精品在线免费看| 中文字幕在线无码一区二区三区| 精品熟女日韩中文十区| 亚洲午夜理论无码电影| 宝贝腿开大点我添添公口述视频| 亚洲成人精品一区二区中| 无码人妻一区二区三区线| 国精品无码一区二区三区在线蜜臀| 亚洲人妻系列中文字幕| 熟女激情乱亚洲国产一区| 波多野结衣av无码| 99久久婷婷国产综合精品青草漫画 | 亚洲综合在线日韩av| 国产精品一区二区日韩精品| 免费99视频| 中文字幕人妻中文AV不卡专区| 国产成人精选视频在线观看不卡 | 日本免费观看mv免费版视频网站| 国产 浪潮av性色四虎| 国产成人午夜福利在线观看| 日韩高清亚洲日韩精品一区二区| 国产精品国产三级国产试看| 免费无码一区无码东京热| аⅴ天堂中文在线网| 99re视频在线| 欧美亚洲国产日韩一区二区| 亚洲人成电影在线天堂色| 亚洲一级特黄大片一级特黄| 亚洲国产精品午夜福利| 亚洲欧美电影在线一区二区| 国产普通话对白刺激| 亚洲欧美中文字幕日韩一区二区| 虎白女粉嫩尤物福利视频| 色综合视频一区二区三区|