chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

應(yīng)用開發(fā)中結(jié)構(gòu)體和鏈表的關(guān)系是怎樣的

玩轉(zhuǎn)單片機(jī) ? 來(lái)源:玩轉(zhuǎn)單片機(jī) ? 作者:玩轉(zhuǎn)單片機(jī) ? 2022-12-12 10:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

不知道各位讀者是怎么理解鏈表的,還有就是鏈表和結(jié)構(gòu)體的關(guān)系?最近開發(fā)的項(xiàng)目資源不是很緊湊,就用了面向?qū)ο缶帉?,就大量的使用到結(jié)構(gòu)體,有時(shí)還會(huì)配合共同體嵌套使用,順便回顧了一些結(jié)構(gòu)體的使用,這里主要簡(jiǎn)單回顧結(jié)構(gòu)體和鏈表的關(guān)系;

鏈表在RTOS上比較常見,這里會(huì)把復(fù)雜的東西簡(jiǎn)單化,這也是為啥有些推文的文字很少的原因,碼農(nóng)的產(chǎn)出就是代碼,核心就是看相關(guān)代碼;鏈表分單鏈表和雙鏈表,核心都差不多的,就用單鏈表做展示;

| 定義節(jié)點(diǎn)

鏈表的最小單位就是節(jié)點(diǎn),節(jié)點(diǎn)的定義就是鏈表的基礎(chǔ),下面展示一些定義的小案例:

//正確定義方式之一
struct node
{
    unsigned char data;
    struct node *next;
};


//錯(cuò)誤定義方式之一
typrder struct node
{
    unsigned char data;
    node_t *next;
}node_t;

代碼都是一行一行執(zhí)行的,如果沒(méi)有提前聲明調(diào)用的話,代碼編譯階段就會(huì)報(bào)錯(cuò),同樣的,類型定義比類型調(diào)用使用晚也會(huì)報(bào)錯(cuò);有些初學(xué)者會(huì)對(duì)結(jié)構(gòu)體使用同名結(jié)構(gòu)體會(huì)有疑問(wèn),其實(shí)把同名的結(jié)構(gòu)體換個(gè)思路,上面的第二行是不是定義了一個(gè)struct node類型的數(shù)據(jù),結(jié)構(gòu)體成員是不是變量類型+變量名,是不是符合結(jié)構(gòu)體的基本使用,所有這樣的用法是合法的;

| 鏈接成表

鏈表的最小單位就是節(jié)點(diǎn),那么多定義幾個(gè)節(jié)點(diǎn),然后就讓它們鏈接起來(lái),那么就形成了鏈表,那么這條“鏈”是啥呢,有時(shí)怎么把它們關(guān)聯(lián)起來(lái)的呢?學(xué)過(guò)鏈表的同學(xué)就很清楚,就是節(jié)點(diǎn)中的同名結(jié)構(gòu)體指針,這個(gè)指針就像電話號(hào)碼,直接通過(guò)電話號(hào)碼就能找到對(duì)應(yīng)的人,同理也可以通過(guò)指針找到對(duì)應(yīng)的節(jié)點(diǎn);

申請(qǐng)內(nèi)存的坑,申請(qǐng)的內(nèi)存一定要強(qiáng)制轉(zhuǎn)換類型,不強(qiáng)制轉(zhuǎn)換默認(rèn)是返回一個(gè)任意類型的指針(void *),不強(qiáng)制轉(zhuǎn)換類型編譯也會(huì)出錯(cuò):

int main()
{
inttemp=10;
// 沒(méi)有強(qiáng)制轉(zhuǎn)換類型,編譯報(bào)錯(cuò)
  int *p = malloc(siezof(temp))
}

列個(gè)完整的小程序,看完基本就學(xué)會(huì)了鏈表:

#include "stdio.h"
#include "stdlib.h"


typedef struct node
{
    unsigned char data;
    struct node *next;
}node_t;


int main()
{
  // 創(chuàng)建幾個(gè)節(jié)點(diǎn)
  node_t* node1=(node_t*)malloc(sizeof(node_t));
  node_t* node2=(node_t*)malloc(sizeof(node_t));
  node_t* node3=(node_t*)malloc(sizeof(node_t));
  
  // 初始數(shù)據(jù)
  node1->data = 1;
  node2->data = 2;
  node3->data = 3;
  
  // 鏈接成表
  node1->next =  node2;
  node2->next =  node3;
  node3->next =  node1;
  
  // 打印數(shù)據(jù)
  printf("data:%d
", node1->data);          // 節(jié)點(diǎn)1的數(shù)據(jù) 
  printf("data:%d
", node1->next->data);        // 節(jié)點(diǎn)2的數(shù)據(jù)
  printf("data:%d
", node1->next->next->data);    // 節(jié)點(diǎn)3的數(shù)據(jù)
  printf("data:%d
", node1->next->next->next->data);  // 節(jié)點(diǎn)1的數(shù)據(jù)
  
  // 釋放內(nèi)存 
  free(node1); 
  free(node2);
  free(node3);
}

鏈表的增刪改查本質(zhì)就是對(duì)節(jié)點(diǎn)中的指針操作,以及節(jié)點(diǎn)的創(chuàng)建和釋放,基本不是什么大問(wèn)題;看到這應(yīng)該對(duì)鏈表基礎(chǔ)知識(shí)沒(méi)有疑問(wèn)了吧,覺(jué)得有收獲的同學(xué)動(dòng)動(dòng)小手指點(diǎn)個(gè)贊吧,我是Noah,我們下篇推文再見!

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • RTOS
    +關(guān)注

    關(guān)注

    24

    文章

    856

    瀏覽量

    122203
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4922

    瀏覽量

    72243

原文標(biāo)題:通俗|結(jié)構(gòu)體與鏈表

文章出處:【微信號(hào):玩轉(zhuǎn)單片機(jī),微信公眾號(hào):玩轉(zhuǎn)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    請(qǐng)問(wèn)EDSADC的采樣值和實(shí)際輸入電壓值的換算關(guān)系怎樣的?

    如題,像EVADC的換算關(guān)系是 端口電壓值 = 采樣值 / 4096 * 5(參考電壓為5V,12bit精度條件下)。那么EDSADC轉(zhuǎn)換完成后得到的采樣值,它跟端口電壓值的換算關(guān)系怎樣的呢(一端輸入,一端接地)?或者說(shuō)是跟輸
    發(fā)表于 07-22 07:02

    定義IO初始化結(jié)構(gòu)

    由上述IOPORT相關(guān)功能的枚舉類型我們可以知道,在對(duì)IOPORT模塊進(jìn)行初始化時(shí)需要根據(jù)情況配置它們。因此我們定義一個(gè)IOPORT初始化的結(jié)構(gòu)類型IOPORT_Init_t,它的成員包括了由上述所有枚舉類型所聲明的變量,因此該結(jié)構(gòu)
    的頭像 發(fā)表于 07-16 16:26 ?954次閱讀

    晶體結(jié)構(gòu)晶面和晶向的關(guān)系

    晶面和晶向是晶體學(xué)兩個(gè)核心的概念,它們與硅基集成電路工藝的晶體結(jié)構(gòu)有密切的關(guān)系
    的頭像 發(fā)表于 06-05 16:58 ?1952次閱讀
    晶體<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>中</b>晶面和晶向的<b class='flag-5'>關(guān)系</b>

    滲壓計(jì)在混凝土結(jié)構(gòu)的安裝指南

    在現(xiàn)代土木工程和巖土工程,滲壓計(jì)是監(jiān)測(cè)混凝土結(jié)構(gòu)體內(nèi)孔隙水壓力變化的重要工具。南京峟思公司生產(chǎn)的滲壓計(jì)因其高精度和可靠性而被廣泛應(yīng)用于各種工程監(jiān)測(cè)項(xiàng)目中。一、滲壓計(jì)在混凝土結(jié)構(gòu)
    的頭像 發(fā)表于 05-28 10:55 ?299次閱讀
    滲壓計(jì)在混凝土<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b><b class='flag-5'>中</b>的安裝指南

    GLAD應(yīng)用:全息光柵模擬

    用于模擬全息記錄介質(zhì)形成的梯度折射率分布。全息結(jié)構(gòu)一旦形成,就可以在傳輸過(guò)程中將一束入射光波逐漸轉(zhuǎn)換成形成體全息結(jié)構(gòu)的另一束光波。兩束光波之間的能量傳遞轉(zhuǎn)換效率與
    發(fā)表于 05-15 09:32

    程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)

    《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》重點(diǎn)闡述了三大方向內(nèi)容: 1. C語(yǔ)言學(xué)習(xí)的痛點(diǎn):針對(duì)當(dāng)前工程師在C語(yǔ)言學(xué)習(xí)的痛點(diǎn),如指針函數(shù)與函數(shù)指針,如何靈活應(yīng)用結(jié)構(gòu)
    發(fā)表于 05-13 16:45

    C語(yǔ)言中結(jié)構(gòu)與聯(lián)合體的深度解析:內(nèi)存布局與應(yīng)用場(chǎng)景

    一、基礎(chǔ)概念與核心差異 1.1 結(jié)構(gòu)(Struct)的本質(zhì) **結(jié)構(gòu)是C語(yǔ)言中實(shí)現(xiàn)數(shù)據(jù)封裝的基石,其核心特征在于內(nèi)存獨(dú)立性。每個(gè)成員變量在內(nèi)存
    發(fā)表于 04-08 09:18

    學(xué)習(xí)智能開發(fā)

    智能是大模型的應(yīng)用落地,正在學(xué)習(xí),這本書太及時(shí)了,非常想看看。
    發(fā)表于 03-27 15:48

    軟國(guó)際Lumi智能開發(fā)平臺(tái)支持DeepSeek

    作為大模型領(lǐng)域的一顆璀璨新星,DeepSeek從模型結(jié)構(gòu)到訓(xùn)推流程進(jìn)行了全面優(yōu)化,并完全開源,打破了算力依賴路徑,推動(dòng)行業(yè)從 “規(guī)模至上” 邁向 “效率優(yōu)先”。軟國(guó)際Lumi智能開發(fā)
    的頭像 發(fā)表于 02-28 15:46 ?806次閱讀

    機(jī)智云發(fā)布Gokit5 AI智能開發(fā)板:工業(yè)級(jí)智能流水線重構(gòu)AIoT開發(fā)范式

    【2025年2月26日,廣州】全球領(lǐng)先的AIoT服務(wù)商機(jī)智云正式發(fā)布“Gokit5AI智能開發(fā)板”,該產(chǎn)品作為行業(yè)首個(gè)全棧式AIoT開發(fā)中樞,深度融合火山引擎云原生架構(gòu)、豆包多模態(tài)大模型、扣子智能
    的頭像 發(fā)表于 02-26 13:33 ?793次閱讀
    機(jī)智云發(fā)布Gokit5 AI智能<b class='flag-5'>體</b><b class='flag-5'>開發(fā)</b>板:工業(yè)級(jí)智能<b class='flag-5'>體</b>流水線重構(gòu)AIoT<b class='flag-5'>開發(fā)</b>范式

    噪聲與ADC的范圍和位數(shù)是什么關(guān)系呢?怎樣選用和匹配?

    以上三者是什么關(guān)系呢?怎樣選用和匹配?ADC的動(dòng)態(tài)輸入范圍一般都有多大的?謝謝
    發(fā)表于 02-08 07:14

    結(jié)構(gòu)成員的順序會(huì)影響結(jié)構(gòu)的大小嗎

    相同的結(jié)構(gòu)成員,如果把順序調(diào)整一下,會(huì)不會(huì)影響結(jié)構(gòu)的大小? 答案是會(huì)的,這主要跟字節(jié)對(duì)齊有關(guān)。 比如這樣的結(jié)構(gòu)
    的頭像 發(fā)表于 11-25 16:24 ?752次閱讀

    一文讀懂BOM管理(下):BOM結(jié)構(gòu)/實(shí)例,PLM的BOM管理

    BOM管理進(jìn)階:如何寫一個(gè)BOM結(jié)構(gòu)?怎樣開始BOM管理?
    的頭像 發(fā)表于 11-13 15:19 ?2312次閱讀
    一文讀懂BOM管理(下):BOM<b class='flag-5'>結(jié)構(gòu)</b>/實(shí)例,PLM<b class='flag-5'>中</b>的BOM管理

    C語(yǔ)言和C++結(jié)構(gòu)的區(qū)別

    同樣是結(jié)構(gòu),看看在C語(yǔ)言和C++中有什么區(qū)別?
    的頭像 發(fā)表于 10-30 15:11 ?973次閱讀

    在TAS5558兩者之間的映射關(guān)系怎樣的?

    在TAS5558,兩者之間的映射關(guān)系怎樣的?
    發(fā)表于 10-18 07:18