C類地址

一個C類IP地址是指在IP地址的四段號碼中,前三段號碼爲網絡號碼,剩下的一段號碼爲本地計算機的號碼。
如果用二進制表示IP地址的話,C類IP地址就由3字節的網絡地址和1字節主機地址組成,網絡地址的最高位必須是“110”,C類IP地址中網絡的標識長度爲21位,主機標識的長度爲8位。
C類IP地址用前面24位來標識網絡號,其中最前面三位規定爲“110”,8位標識主機號這樣C類地址的第一段取值爲“11000000~11011111之間,轉換成十進制後即爲192~223第一段、第二段、第三段合在一起表示網絡號,最後一段標識網絡上的主機號,它的地址範圍爲“192.0.0.0~192.168.255.255”。

地址類型

C語言地址類型 地址類型就是該地址對應的內存單元中的內容的數據類型(指向函數的指針除外)。
例如:char c,*pc;int i,*pi;int (* pa),ar; 這裏,c是char類型的變量,c是c的地址,執行pc=c後,指針變量pc指向了變量c,pc和c的值都是地址,且地址類型是char類型(字符型地址)。
字符型地址對應的內存單元的大小爲1個字節。
i是int類型的變量,i是i的地址,執行pi=i後,指針變量pi指向了變量i,pi和i的值都是地址,且地址類型是int類型(整型地址)。
字符型地址對應的內存單元的大小爲4個字節。

編譯、連接、.h文件和.lib文件、.dll文件還有.o文件是什麼關係?他們各有什麼作用?

編譯、連接、.h文件和.lib文件、.dll文件還有.o文件是什麼關係?他們各有什麼作用?編譯、連接、.h文件和.lib文件、.dll文件還有.o文件是什麼關係?他們各有什麼作用? 還有在C語言裏面怎麼使用 .lib .dll、怎麼編寫li…顯示全部 請服用《Advanced C and C++ Compiling》,包治好。
下面是我的一點理解: 編譯,一般就是把源文件轉化成一個一個的二進制的目標文件。
會留下一些坑,就是一些使用的其他文件的裏的函數和變量會暫時不明確具體訪問地址,留給下一步解決。
鏈接,填編譯階段留下的坑,把沒有確定訪問地址變量函數都一個個設置好,然後把所有輸入的目標文件按照一定格式組成輸出文件,一般就是可執行文件或者庫文件,可執行文件不說,庫文件就是打包好的目標文件,給別人用的。
.h,實際上就是普通文件,特殊的後綴名而已,你自己用什麼後綴名無所謂,和.c沒什麼區別,include動作,實際上就是可以理解爲copy過來,你也可以include .c啊。
.o ,編譯產生的目標文件,有一定格式的二進制文件,除了除了頭信息,debug信息之外,仔細觀察,實際上就是平臺的機器碼。
.dll,動態庫,庫文件,可以理解裏面是具體的函數二進制打包,給其他可執行程序用的,好像,也有自己就能運行的。
動態就是編譯的時候只指定lib路徑和聲明就行,不會實際組成可執行文件,實際運行的時候操作系統會load這些動態庫,給可執行程序使用。
對應的是靜態庫,鏈接的時候就組成到可執行文件裏,一般後綴.a,不用load. 就醬。
2016-12-20 20:31 贊同317

編譯、連接、.h文件和.lib文件、.dll文件還有.o文件是什麼關係?他們各有什麼作用?

編譯、連接、.h文件和.lib文件、.dll文件還有.o文件是什麼關係?他們各有什麼作用?編譯、連接、.h文件和.lib文件、.dll文件還有.o文件是什麼關係?他們各有什麼作用? 還有在C語言裏面怎麼使用 .lib .dll、怎麼編寫li…顯示全部 請服用《Advanced C and C++ Compiling》,包治好。
下面是我的一點理解: 編譯,一般就是把源文件轉化成一個一個的二進制的目標文件。
會留下一些坑,就是一些使用的其他文件的裏的函數和變量會暫時不明確具體訪問地址,留給下一步解決。
鏈接,填編譯階段留下的坑,把沒有確定訪問地址變量函數都一個個設置好,然後把所有輸入的目標文件按照一定格式組成輸出文件,一般就是可執行文件或者庫文件,可執行文件不說,庫文件就是打包好的目標文件,給別人用的。
.h,實際上就是普通文件,特殊的後綴名而已,你自己用什麼後綴名無所謂,和.c沒什麼區別,include動作,實際上就是可以理解爲copy過來,你也可以include .c啊。
.o ,編譯產生的目標文件,有一定格式的二進制文件,除了除了頭信息,debug信息之外,仔細觀察,實際上就是平臺的機器碼。
.dll,動態庫,庫文件,可以理解裏面是具體的函數二進制打包,給其他可執行程序用的,好像,也有自己就能運行的。
動態就是編譯的時候只指定lib路徑和聲明就行,不會實際組成可執行文件,實際運行的時候操作系統會load這些動態庫,給可執行程序使用。
對應的是靜態庫,鏈接的時候就組成到可執行文件裏,一般後綴.a,不用load. 就醬。
2016-12-20 20:31 贊同309 實事求是。
贊同143 義務的C/C++初學者輔導 《C程序設計伴侶》中的這張插圖,可以部分地回答你的問題 其中,從area.c到area.o的過程就是編譯,而.o文件是編譯的結果 在Windows平臺上,靜態庫就是lib文件,動態庫就是dll文件 如果還有疑問,可以參考書上的更詳細的介紹 《C程序設計伴侶》試讀與預訂 贊同45 C語言答疑課堂 東南大學 計算機應用技術碩士 各路大神回答的都很清楚了,我也說下我的理解,描述上不一定嚴謹,只是闡述一下意思: 1. 先說下編譯。
假設你已經寫好了一大堆的.c文件和.h文件,下面開始編譯了,此時跟連接、.lib文件、.dll文件還有.o文件沒關係,但是跟.h文件和.c文件有關係,因爲要把它們編譯成機器自己認識的代碼,也就是機器代碼。
2. 再說說.o文件。
編譯完了後,上述一大堆的.c和.h文件會被編譯爲.o文件,此時跟編譯、.h文件和.lib文件、.dll文件也沒什麼關係了。
.o文件一般就是機器代碼了,但是別以爲此時就能執行這個文件了。
上述.c文件裏你肯定會調用好多的C標準庫函數,被編譯後,.o機器代碼裏可沒有這些庫函數的代碼,所以還要把這些庫函數的代碼拉過來,這就是鏈接乾的事兒了; 3. 再說說鏈接。
鏈接器會把編譯器編譯好的.o文件,以及.o文件中調用的庫函數代碼“合”到一起。
在linux系統上,這些庫函數代碼就在.lib中,在windows系統上,這些庫函數代碼就在.dll中。
4. 經過上述步驟後,你寫的源代碼最終就變成一個可執行程序了,在windows上就是exe文件,在linux上就是.out文件了。
5. 所以,要搞清你說的這些術語之間的關係,可以用兩個簡單的線來描述,即: 你寫好的.c和.h源代碼——>編譯——>編譯爲.o文件; .o文件+lib文件或者.o文件+.dll文件——>連接器——>“合”在一起,變成一個可執行程序,如exe文件或者.out文件。
2019-12-22 20:42 贊同36 知乎首答,不請自來,歡迎大家批評指正。
原創文章: https:// segmentfault.com/a/1190 000014632790 贊同43