接著上一節(jié)課我們繼續(xù)講解,要想實(shí)現(xiàn)任意數(shù)據(jù)類(lèi)型的數(shù)據(jù)交換,當(dāng)然第一印象就是使用C++ 里面的模板特性萨咳,但如果使用C語(yǔ)言怎么實(shí)現(xiàn)呢钻蹬, 要想在 C語(yǔ)言中實(shí)現(xiàn)這個(gè)功能逻谦, 必須在C語(yǔ)言中找到一個(gè)可以接受任意類(lèi)型的數(shù)據(jù)類(lèi)型,那C語(yǔ)言中有沒(méi)有呢,本文會(huì)給你答案
1.void * 在 C 語(yǔ)言中可以指代任意數(shù)據(jù)指針。你可以把任意數(shù)據(jù)指針賦值給一個(gè) void * 變量同蜻,也可以把一個(gè) void * 變量賦給特定的指針類(lèi)型變量。有了void類(lèi)型指針以后早处,swap.h文件將變成:
QQ截圖20161202180026.png
2.接著就要實(shí)現(xiàn)swap.c, 由于沒(méi)有void類(lèi)型的數(shù)據(jù)湾蔓,所以無(wú)法使用上一節(jié)中使用的方式來(lái)解決,但不管什么的數(shù)據(jù)砌梆,在內(nèi)存中都是以二進(jìn)制存在的默责,故可以使用memcpy這樣的api來(lái)直接操作內(nèi)存來(lái)實(shí)現(xiàn)數(shù)據(jù)的交換,基于以上的想法么库,我們給出swap.c的代碼傻丝,代碼如下:
QQ截圖20161202180100.png
3.編寫(xiě)測(cè)試文件
![Uploading QQ截圖20161202180315_077264.png . . .]
4.編譯 并輸出
QQ截圖20161202180315.png
u=2325089841,239967740&fm=23&gp=0.jpg