分析:你在args函數(shù)中對不定參進(jìn)行遍歷,但要求最后是0時跳出循環(huán),顯然main中的數(shù)據(jù)不符合要求,導(dǎo)致遍歷溢出,結(jié)果難以預(yù)測。
泗洪網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)公司成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運(yùn)維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
宏很難實現(xiàn)變長參數(shù),不過c提供了函數(shù)來處理,在c中printf,scanf等函數(shù)就是處理變長參數(shù)列表的。
在C語言中,如果把數(shù)組作為一個函數(shù)的參數(shù)的話,在對函數(shù)進(jìn)行傳值的時候只是把數(shù)組的首地址傳過去,也就是指針傳過去,所以再用sizeof(array)/sizeof(int)求數(shù)組的大小只能得到1。
很巧我現(xiàn)在正好也有實現(xiàn)這樣函數(shù)的需求,其實就是看了C語言可變參數(shù)函數(shù)的相關(guān)資料,你就差不多知道怎么實現(xiàn)了。只不過其中有一個很重要的大坑,只要邁過去就沒問題。
參數(shù)是存放在內(nèi)存的堆棧里的。如果所傳的參數(shù)長度超出了分配的內(nèi)存的長度,內(nèi)存里會出現(xiàn)不可預(yù)期的內(nèi)容。所以這樣做是很有危險的,黑客總是善于利用這樣的漏洞。
VA_LIST是在C語言中解決變參問題的一組宏,所在頭文件:#include stdarg.h,用于獲取不確定個數(shù)的參數(shù)。
C語言中定義了va_list, va_start( ), va_arg( ), va_end( ) 這樣一組宏來處理可變參數(shù)問題。可以參考printf的聲明,創(chuàng)建自己的實現(xiàn)函數(shù)。
includecstdarg #includeiostream using namespace std; //c參數(shù)類型,參數(shù)個數(shù)不確定。
首先先看到main函數(shù)中的不定參數(shù):引用:在Turbo C0啟動過程中, 傳遞main()函數(shù)三個參數(shù): argc, argv和env。argc: 整數(shù), 鴐ain()的命令行參數(shù)個數(shù)。argv: 字符串?dāng)?shù)組。
C語言可以用不定參數(shù)來實現(xiàn):這里使用了第一個參數(shù)來表達(dá)具體數(shù)字的個數(shù),可以避免一些內(nèi)部實現(xiàn)的麻煩,add函數(shù)的預(yù)期也比較明確。
c,用函數(shù)指針的形式傳入所需要的比較策略,比方數(shù)字大小比較函數(shù),字符串大小比較函數(shù)之類的。這樣實現(xiàn)可以適針對任意結(jié)構(gòu)體中任意類型的字段,按照任意的比較策略來實現(xiàn)排序。
指針的值是指針本身存儲的數(shù)值,這個值將被編譯器當(dāng)作一個地址,而不是一個一般的數(shù)值。在32位程序里,所有類型的指針的值都是一個32位整數(shù),因為32位程序里內(nèi)存地址全都是32位長。
LOG_INFO* log_info = new LOG_INFO();//放到煉表里保存指針 info_list.push_back(log_info);...//some function } output_log(info_list);//把煉表給輸出的函數(shù) release_info(info_list);//釋放new的東西。
VA_LIST是在C語言中解決變參問題的一組宏,所在頭文件:#include stdarg.h,用于獲取不確定個數(shù)的參數(shù)。
當(dāng)前文章:c語言不定參數(shù)函數(shù) c語言 不定參數(shù)
本文網(wǎng)址:http://aaarwkj.com/article30/diohjso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、軟件開發(fā)、微信公眾號、營銷型網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)