C語言字串靜態鏈結符

2021-10-09 22:02:51 字數 742 閱讀 8037

巨集定義中的## 連線符與# 符

.這## 連線符號由兩個井號組成,其功能是在帶引數的巨集定義中將兩個子串(token)聯接起來,從而形成乙個新的子串。但它不可以是第乙個或者最後乙個子串。所謂的子串(token)就是指編譯器能夠識別的最小語法單元。具體的定義在編譯原理裡有詳盡的解釋,但不知道也無所謂。同時值得注意的是#符是把傳遞過來的引數當成字串進行替代。下面來看看它們是怎樣工作的

假設程式中已經定義了這樣乙個帶引數的巨集:

#define paster( n ) printf( 「token」 #n " = %d", token##n )

同時又定義了乙個整形變數:

int token9 = 9;

現在在主程式中以下面的方式呼叫這個巨集:

paster( 9 );

那麼在編譯時,上面的這句話被擴充套件為:

printf( 「token」 「9」 " = %d", token9 );

注意到在這個例子中,paster(9);中的這個」9」被原封不動的當成了乙個字串,與」token」連線在了一起,從而成為了token9。而#n也被」9」所替代。

可想而知,上面程式執行的結果就是在螢幕上列印出token9=9

不過需要注意的是,巨集是由編譯器在編譯階段識別的,所以不能指望程式執行時起到連線作用.比如:

int a0, a1, a2, a3;

for (int i = 0; i < 4; i++)

{a##i = i;

這種**就無法編譯了.

C語言字串結束符

0 就是8位的00000000,因為字元型別中並沒有對應的這個字元,所以這麼寫。0 就是 字串結束標誌。0 是轉譯字元,意思是告訴編譯器,這不是字元0,而是空字元。空字元 0對應的二進位制為00000000,而數字0為00110000 原來,在c語言中沒有專門的字串變數,通常用乙個字元陣列來存放乙個...

C語言 3 字串

字元陣列 char 看做乙個特殊的字元陣列,在字串結束為止新增 0 結束符 ascii碼0 沒有 0結尾的是普通的字元陣列。使用雙引號定義的字串自動在尾部加上 0 puts s 函式 輸出記憶體直至遇到 0 陣列變數名代表了陣列位址,例如char s 20 s就是陣列位址,不用 s gets s 函...

題目1490 字串鏈結

時間限制 1 秒 記憶體限制 128 兆 特殊判題 否 提交 63 解決 35 題目描述 不用strcat 函式,自己編寫乙個字串鏈結函式mystrcat char dststr,charsrcstr 輸入 兩個字串,字串由小寫字母組成。輸出 鏈結後的字串 樣例輸入 hello world good...