原创 虛擬機,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(