C語言雜記 0x01

2021-08-21 10:30:02 字數 1147 閱讀 4507

ascii碼中 字元a是97,字元b是98,計算 『a』+1這個表示式,應該按照ascii碼把』a』當做證書值97,然後加1,得到98,然後printf把98這個整數值當做ascii碼來列印,列印出相應字元b

我們稱整型為」int」型,現在我們知道」char」型別本質上也是整數,只不過比」int」型別的表示範圍小,所以以後我們把char型和int型統稱為整數型別(integer type) 或簡稱整型

字元也可以用ascii碼來表示,這種轉義字元可以用\加上1~3個八進位制數字表示,或者由\x或大寫的\x加上1~2個十六進製制數字組成。例如,『\0』表示null字元,』\11』或』\x9』表示tab字元,」\11」或」\x9」表示由tab字元組成的字串。 注意』0』的ascii碼是48,而』\0』的ascii碼是0,兩者是不同的。

使用gcc命令編譯math.h中的庫函式必須加 -lm 選項,因為數學函式位於庫函式libm.so庫檔案中,-lm告訴compiler,我們的程式中的數學函式到這個庫函式中找

大部分常用的函式都在libc.so庫檔案中,但是編譯的時候不需要加入 -lc ,當然加了也不算錯

#include 

int main(void)

void newline(void)

void threeline(void)

編譯器會報警

$ gcc main.c

main.c:17: warning: conflicting types for

'threeline'

main.c:6: warning: previous implicit declaration of 'threeline' was here

但是仍然能編譯通過

這裡涉及了隱式宣告,在main函式呼叫threeline()時,並沒有宣告他,所以compiler預設宣告為 int threeline(void);

隱式宣告函式的返回型別都是int型別,我們呼叫這個函式時沒有傳遞任何引數,所以編譯器認為這個隱式宣告的引數型別為void,這樣函式的引數和返回型別就定下來了,編譯器根據這些資訊為函式呼叫生成相應的指令,然後編譯器接著往下看,看到threeline的時候發現函式的原型是void threeline(void);

和先前的隱式宣告不太一樣,所以報警告

關於彙編 0x01記憶體

記憶體,與記憶體條不是乙個概念。在計算機中,每個程序都有自己的4gb記憶體空間,這個4gb的記憶體空間並不是真實的,而是系統分配的虛擬記憶體。虛擬記憶體 物理記憶體 記憶體條等其它硬體裝置 板卡記憶體 物理記憶體是用來跟硬體記憶體互相對映的,跟記憶體條的大小也不是一一對應的。如何通過虛擬記憶體如何找...

招聘程式設計題0x01

python3 coding utf 8 題目描述 請設計乙個高效演算法,再給定的字串陣列中,找到包含 coder 的字串 不區分大小寫 並將其作為乙個新的陣列返回。結果字串的順序按照 coder 出現的次數遞減排列,若兩個串中 coder 出現的次數相同,則保持他們在原陣列中的位置關係。給定乙個字...

0x01 基本命令

上 ctrl p previous 下 ctrl n next 左 ctrl b backward 右 ctrl f forward del ctrl d delete home ctrl a the first letter end ctrl e end 清除整行 ctrl u 刪除游標到行末 c...