欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

嵌入式C語言二級指針在鏈表中的應(yīng)用

 更新時間:2022年04月11日 11:03:16   作者:zhzht19861011  
這篇文章主要為大家介紹了嵌入式C語言二級指針在鏈表中的應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪

重讀了兩本書:Stephen A.Maguire的《編程精粹:Microsoft編寫優(yōu)質(zhì)無錯C程序秘訣》和David R. Hanson的《C語言接口與實現(xiàn):創(chuàng)建可重用軟件的技術(shù)》。兩本書都有對鏈表的操作。

假設(shè)有如圖所示的鏈表,鏈表節(jié)點的pb成員指向一個緩沖塊,刪除節(jié)點函數(shù)根據(jù)緩沖塊的首地址,找到節(jié)點并刪除節(jié)點:

鏈表舉例

《編程精粹》使用一個變量pbiPrev來保存前一個節(jié)點位置,并且要處理刪除的是第一個節(jié)點A這種邊界條件:

void FreeBlockInfo(byte *pbToFree)
{
	blockinfo *pbi, *pbiPrev;
    pbiPrev = NULL;
	for(pbi = pbiHead; pbi != NULL; pbi = pbi->pbiNext)
	{
		if(fPtrEqual(pbi->pb, pbToFree)
		{
			if(pbiPrev == NULL)
				pbiHead = pbi->pbiHead;
			else
				pbiPrev->pbiNext = pbi->pbiNext;
			break;
		}
		pbiPrev = pbi;
	}
	/*如果pbi是NULL, 說明參數(shù)pbToFree非法*/
	ASSERT(pbi != NULL);
	/*在釋放前破壞掉要釋放內(nèi)存中的內(nèi)容*/
	memset(pbi, bGarbage, sizeof(blockinfo));
	free(pbi);
}

《C語言接口與實現(xiàn)》使用了二級指針,可以很巧妙的省掉變量pbiPrev以及邊界判斷:

void FreeBlockInfo(byte *pbToFree)
{
    blockinfo **ppbi, *pbiFind;
    pbiFind = NULL;
    for(ppbi = &pbiHead; *ppbi != NULL; ppbi = &(*ppbi)->pbiNext)
    {
        if(fPtrEqual((*ppbi)->pb, pbToFree)
		{
            pbiFind = *ppbi;
            *ppbi = (*ppbi)->pbiNext;
            break;
        }
    }
    /*如果pbiFind是NULL, 說明參數(shù)pbToFree非法*/
	ASSERT(pbiFind != NULL);
	/*在釋放前破壞掉要釋放內(nèi)存中的內(nèi)容*/
	memset(pbiFind, bGarbage, sizeof(blockinfo));
	free(pbiFind);
}

以上就是嵌入式C語言二級指針在鏈表中的應(yīng)用的詳細(xì)內(nèi)容,更多關(guān)于嵌入式C語言二級指針鏈表的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解C語言如何執(zhí)行HTTP GET請求

    詳解C語言如何執(zhí)行HTTP GET請求

    在現(xiàn)代互聯(lián)網(wǎng)時代,網(wǎng)絡(luò)數(shù)據(jù)的獲取和分析變得越來越重要,本文我們將使用C語言和libcurl庫來編寫一個簡單的網(wǎng)絡(luò)爬蟲,以執(zhí)行HTTP GET請求并獲取淘寶網(wǎng)頁的內(nèi)容,感興趣的可以了解下
    2023-11-11
  • C語言學(xué)習(xí)之函數(shù)知識總結(jié)

    C語言學(xué)習(xí)之函數(shù)知識總結(jié)

    函數(shù)是一組一起執(zhí)行一個任務(wù)的語句。每個?C?程序都至少有一個函數(shù),即主函數(shù)?main()?,所有簡單的程序都可以定義其他額外的函數(shù)。本文就為大家詳細(xì)講講C語言中函數(shù)的相關(guān)知識點,希望有所幫助
    2022-07-07
  • opencv3/C++圖像濾波實現(xiàn)方式

    opencv3/C++圖像濾波實現(xiàn)方式

    今天小編就為大家分享一篇opencv3/C++圖像濾波實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • C語言詳細(xì)分析浮點數(shù)在內(nèi)存中的儲存

    C語言詳細(xì)分析浮點數(shù)在內(nèi)存中的儲存

    我們在日常生活中和編程中都會用到小數(shù),比如:3.1415926、29.9、1E10(科學(xué)計數(shù)法也是浮點型)。在C語言中的浮點型類型有:float,double,long double。那么浮點數(shù)在這些浮點型的內(nèi)存之中又是如何儲存的呢,這就是今天我們要分享的
    2022-06-06
  • OpenCV4.1.0+VisualStudio2019開發(fā)環(huán)境搭建(超級簡單)

    OpenCV4.1.0+VisualStudio2019開發(fā)環(huán)境搭建(超級簡單)

    這篇文章主要介紹了OpenCV4.1.0+VisualStudio2019開發(fā)環(huán)境搭建(超級簡單),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • C語言斷言函數(shù)assert()的學(xué)習(xí)筆記

    C語言斷言函數(shù)assert()的學(xué)習(xí)筆記

    在C語言庫函數(shù)中提供了一個輔助調(diào)試程序的小型庫,它是由assert()宏組成,本文就詳細(xì)的介紹了一下如何使用,感興趣的可以了解一下
    2021-11-11
  • C語言跳轉(zhuǎn)瀏覽器打開指定URL的操作代碼

    C語言跳轉(zhuǎn)瀏覽器打開指定URL的操作代碼

    這篇文章主要介紹了C語言跳轉(zhuǎn)瀏覽器打開指定URL,該代碼使用sprintf()函數(shù)將要打開的URL添加到一個系統(tǒng)命令中,然后使用system()函數(shù)調(diào)用該命令以默認(rèn)瀏覽器打開URL,需要的朋友可以參考下
    2023-04-04
  • C語言單鏈表實現(xiàn)學(xué)生管理系統(tǒng)

    C語言單鏈表實現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言單鏈表實現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C語言手把手教你實現(xiàn)貪吃蛇AI(上)

    C語言手把手教你實現(xiàn)貪吃蛇AI(上)

    這篇文章主要介紹了C語言手把手教你實現(xiàn)貪吃蛇AI,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++實現(xiàn)MyString的示例代碼

    C++實現(xiàn)MyString的示例代碼

    本文主要介紹了C++實現(xiàn)MyString的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論