原创 虛擬機,samba服務:路徑太深,無法複製
要開啓windows firewall/internet connection share(ICS)服務, ICS:顧名思義,網絡連接共享服務,不過不知所云
原创 第五章——操作符和表達式
一、操作符 1.算數操作符中,除了%取模操作符只接受整型操作數之外,+ - * /既可適用浮點類型 又可使用於整型。 2.移位操作符中,算數左移和邏輯左移是相同的,而對於有符號數的右移操作,採用0填充還是符號位是因編譯器而異的,因此是不可
原创 第二章
1.C語言編譯過程:預處理,編譯,彙編,中間代碼生成,代碼優化,目標代碼生成。預處理:宏替換,#include包含頭文件,條件編譯指令,typedef類型定義。編譯:將預處理過的C生成彙編.s/.asm。彙編:將彙編代碼生成中間代碼.o文
原创 第三章——數據
一、基本數據類型 1.四種基本類型:整型、浮點型、指針和聚合類型(如數組和結構、枚舉等) 2.長整數至少和整型一樣長,而整型至少應該和短整型一樣長; 3.缺省的char要麼是unsigned,要麼是signed char,表準規定這取決於
原创 pathmunge詳解
pathmunge是linux系統redhat系列版本系統變量/etc/profile中的函數,如果想要把某個二進制程序可以在所有的shell不用全路徑運行,就需要將其所在的目錄放在profile中,用過的命令正是pathmunge (目
原创 第四章——語句
1.C並不具備布爾類型,而是用整型來代替,if和while只的判斷表達式可以是任何能夠產生整型結果的表達式 2.else隸屬最靠近它的不完整的if語句 3.break用於結束整個循環,continue結束本次循環 4. switch(ex
原创 操作符的優先級和求值順序——C語言
1.操作優先級: () [] -> . L-R ! ~ ++ -- - (type) * & sizeof R-L * / % L-R + - L-R >> << L-R < > <= >=
原创 第一章
1.註釋://爲行註釋符,/* */爲段註釋符,由於註釋不能嵌套,使用/* */註釋段代碼時往往不能如願,建議使用#if指令 #if 0 statements //段代碼 #endif 2.在函數形參前加const,表示函
原创 第六章——指針
1.多字節數據的地址是在最左邊還是最右邊的位置,不同的機器有不同的規定,這也正是大端和小端的區別,地址也要遵從邊界對齊 2.高級語言的一個特性就是通過名字而不是地址來訪問內存的位置,但是硬件仍然通過地址訪問內存位置 3.內存中的變量都是義
原创 float精度和數值範圍
float:一般的編譯器爲其分配的內存爲4個字節,內存表示形式:符號爲(1位)階碼(8位有符號整型數)尾數(23位) 精度:有效數字或者說小數點之後的位數爲23位,2^(-23)=0.0000001,所以精度爲6~7位,數值範圍爲1+
原创 統計二進制中1的個數
最關鍵內容: 判斷某一位置是否是1的一個方法(可以跳過0,所以比全部位置循環一遍效率高),v&=(v-1); 例如: 01 000 000 &(01 000 000 - 00 000 001)= 01 000 000 &00 11
原创 大小端——C語言
大小端是指多字節數據在內存中的存儲形式,大端:高字節在低地址,低字節在高地址,小端則正好相反。 無論大端、小端,多字節的數據的地址統一爲低地址; 在linux系統中,可以在/usr/include/bits/endian.c中看到對對在
原创 第10章——結構和聯合
1.C提供了兩種類型的聚合數據類型:數組與結構。數據是相同類型的元素的集合,結構把不同類型的值存儲在一起。數組的元素通過下標引用或指針間接訪問來選擇,結構成員通過名字來訪問。與數組不同,它並不被替換成一個指針,它屬於標量類型,它可以作爲傳
原创 #define 與 const
define和const 一般的常量定義有兩種方法,一種是使用宏#define,一種是使用關鍵字const,或枚舉enum。 這三個方法C++都支持,但C編譯器不一定支持,C只有99版纔開始支持const關鍵字,並且C是由於C++
原创 可變參數列表:簡單printf函數的實現
有時候形式參數不確定,ANSI C採用可變參數列表的形式來實現這種函數,在stdarg.h中包括三個宏:va_list va_start (va_list,pre_arg) va_arg(va_list,type) va_end(