C語言沒有連接符這個(gè)東西,在C標(biāo)準(zhǔn)的預(yù)編譯指令中有定義 ## 作為連接字符串的連接符。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的建安網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
#include stdio.h
#include stdlib.h
#include string.h
int
main(void)
{
char a[] = "abc";
char b[] = "xyz";
char *p;
if ((p = malloc((strlen(a) + strlen(b) + 1) * sizeof(char))) == NULL) {
fprintf(stderr, "malloc error!\n");
abort();
}
strcpy(p, a);
strcat(p, b);
puts(p);
if (p)
free(p);
exit(0);
}
您好,我來試著解答一下你的疑惑。
先上兩張圖:
這個(gè)說的很明白,#粘合后成為“字符串”,而##粘結(jié)后成為“記號”。
所以,"token" #n之后,比如"token" #8,會顯示為字符串"token8" ,這時(shí)調(diào)用"token8"[0],就相當(dāng)于你取字符串?"token8"中第一個(gè)字符,跟使用數(shù)組類似了(這一點(diǎn)存疑的話可以自己試驗(yàn),比如"abcde[2]"代表c,跟用字符數(shù)組是一樣的)。
但是"token" ##n之后,比如"token" ##8,會顯示為記號token8,這時(shí)的token8相當(dāng)于變量名而不是一個(gè)字符串字面量,所以token8[0]當(dāng)然就是指這個(gè)數(shù)組里第一個(gè)元素了。
若有疑問請?zhí)岢?..
您的采納是我們的動力~~
(一)宏定義中的##
連接符與#
符
##
連接符號由兩個(gè)井號組成,其功能是在帶參數(shù)的宏定義中將兩個(gè)子串(token)聯(lián)接起來,從而形成一個(gè)新的子串。但它不可以是第一個(gè)或者最后一個(gè)子串。所謂的子串(token)就是指編譯器能夠識別的最小語法單元。具體的定義在編譯原理里有詳盡的解釋,但不知道也無所謂。同時(shí)值得注意的是#符是把傳遞過來的參數(shù)當(dāng)成字符串進(jìn)行替代。下面來看看它們是怎樣工作的。這是MSDN上的一個(gè)例子。
假設(shè)程序中已經(jīng)定義了這樣一個(gè)帶參數(shù)的宏:
#define
paster(
n
)
printf(
"token"
#n
"
=
%d",
token##n
)
同時(shí)又定義了一個(gè)整形變量:
int
token9
=
9;
現(xiàn)在在主程序中以下面的方式調(diào)用這個(gè)宏:
paster(
9
);
那么在編譯時(shí),上面的這句話被擴(kuò)展為:
printf(
"token"
"9"
"
=
%d",
token9
);
注意到在這個(gè)例子中,paster(9);中的這個(gè)”9”被原封不動的當(dāng)成了一個(gè)字符串,與”token”連接在了一起,從而成為了token9。而#n也被”9”所替代。
可想而知,上面程序運(yùn)行的結(jié)果就是在屏幕上打印出token9=9
(二)"\"與一個(gè)較長占多行的宏
宏定義中允許包含兩行以上命令的情形,此時(shí)必須在最右邊加上"\"且該行"\"后不能再有任何字符,連注釋部分都不能有,下面的每行最后的一定要是"\","\"后面加一個(gè)空格都會報(bào)錯(cuò),更不能跟注釋。
#define
exchange(a,b)
{\
int
t;\
t=a;\
a=b;\
b=t;\
}
新聞名稱:c語言函數(shù)連接符號怎么叫 c語言中連接函數(shù)
文章轉(zhuǎn)載:http://muchs.cn/article48/ddcgoep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、服務(wù)器托管、網(wǎng)站設(shè)計(jì)公司、軟件開發(fā)、微信小程序、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)