藍橋杯物聯網競賽_STM32L071KBU6_關于sizo of函數產生的BUG

首先現象是我在用LORA發送信息的時候,左邊顯示長度是8而右邊接收到的數據長度卻是4

我以為是OLED顯示屏壞了,又或者是我想搞創新用了const char* 類型強制轉換數據的原因,結果發現都不是

void Function_SendMsg( unsigned char* data){unsigned char len = sizeof(data);sprintf((char* )ARRAY2, "%d", len);OLED_ShowString(2, ARRAY2);LORA_Tx((unsigned char* )data, len);len = sizeof(data);sprintf(ARRAY2, "%d", len);//OLED_ShowString(2, ARRAY2);OLED_ShowString(0, ARRAY2);
}

最終發現原因出在這個函數這個函數的len輸出一直是4,而下面的輸出是20

#include<stdio.h>
unsigned char ARRAY1[20];void Function_GetLen(unsigned char* data){unsigned char len = sizeof(data);printf("函數中的字符串長度:%d", len);
}int main(){printf("%d\n", sizeof(ARRAY1));	 Function_GetLen(ARRAY1);
} 

將問題簡化成上述代碼,data指針指向ARRAY1數組,ARRAY1數組的sizeof肯定是20,那么sizeof(data)的輸出也應該是20

但輸出結果如下:

在這里插入圖片描述

我非常不理解,查過sizeof資料后發現

當使用 sizeof 運算符作用于數組時,得到的是整個數組的大小,而不是數組首元素的指針的大小,同樣,當您使用 sizeof,運算符作用于指針時,您得到的是指針本身的大小,而不是指針所指向的數據的大小。

也就是說雖然data是指向ARRAY1的但是data本身是個指針,size of 后返還的是指針大小,而ARRAY1是數組,應該在編碼的時候就區分了ARRAY1和data的區別,本質上雖然ARRAY1和data都是指針類,但細分的話他倆又有明顯區別,size of正是通過這個區別做不同處理返回不同結果。

通過這個小小細節也就不難醒悟到,不要因為一點小小的成就就沾沾自喜,我所掌握的可能僅僅只是冰山一角,驕兵必敗,踏踏實實一步一個腳印的去做,即使失敗也是帥氣的,還有就是比賽的時候最好不要搞創新,以免產生不必要麻煩,當然平常練習多科研還是很好的,像現在這樣把坑都踩了,比賽的時候容錯率就跟高了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13642.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13642.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13642.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微軟Edge

微軟Edge瀏覽器概述 功能介紹 微軟Edge是一款基于Chromium開源項目的網頁瀏覽器&#xff0c;旨在提供更快的網頁加載速度、更高的安全性和更好的用戶體驗。它支持多種操作系統&#xff0c;包括Windows、macOS、Android和iOS&#xff0c;能夠滿足不同用戶的需求。Edge瀏覽器擁…

趕緊收藏!2024 年最常見 20道 Redis面試題(三)

上一篇地址&#xff1a;趕緊收藏&#xff01;2024 年最常見 20道 Redis面試題&#xff08;二&#xff09;-CSDN博客 五、Redis的持久化機制是什么&#xff1f; Redis 是一個高性能的鍵值存儲系統&#xff0c;支持多種類型的數據結構&#xff0c;如字符串、哈希、列表、集合、…

python數據類型之字符串

目錄 1.字符串概念和注意事項 2.字符串內置函數 3.字符串的索引、切片和遍歷 4.字符串運算符 5.字符串常用方法 性質判斷 開頭結尾判斷 是否存在某個子串 大小寫等格式轉化 子串替換 刪除兩端空白字符 格式化字符串 分割與合并 6.字符串模板 7.exec 函數 8.字符…

【Linux】-Zookeeper安裝部署[17]

簡介 apache ZooKeeper是一個分布式的&#xff0c;開放源碼的分布式應用程序協調服務&#xff0c;是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟件&#xff0c;提供的功能包括&#xff1a;配置維護、域名服務、分布式同步、組服務等。 除了為Hadoop和H…

2024最新 Jenkins + Docker 實戰教程(四) - 編寫自己的Springboot項目實現自動化部署

&#x1f604; 19年之后由于某些原因斷更了三年&#xff0c;23年重新揚帆起航&#xff0c;推出更多優質博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有堅忍不拔之志 &#x1f390; 個人CSND主頁——Mi…

VMware Num Lock 總自動切換的問題解決

VMware Num Lock 總自動切換的問題解決 0. 問題描述1. 解決方法 0. 問題描述 使用 VMware 虛擬機時&#xff0c;鼠標在 VMware 和主機之間切換時&#xff0c;總是顯示 “Num Lock 開” 和 “Num Lock 關” 的提示框。 1. 解決方法 在 VMware 系統中&#xff0c;按 fn num 統…

0407放大電路的頻率響應

放大電路的頻率響應 單時間常數RC電路的頻率響應中頻響應高頻響應低頻響應全頻域響應 放大電路頻率響應概述1. 直接耦合放大電路頻域響應阻容耦合放大電路頻域響應 4.7.1 單時間常數RC電路的頻率響應 4.7.2 放大電路頻率響應概述 4.7.3 單級共射極放大電路的頻率響應 4.7.4 單級…

TOSHIBA UTLH21 屬于Unifi NV系列

TOSHIBA UTLH21 是東芝推出的一款工業控制器&#xff0c;屬于Unifi NV系列。 這款控制器代表了東芝在工業自動化領域的一次重要進步&#xff0c;它在功能和性能上都超越了現有的V系列控制器。以下是UTLH21的一些主要特點&#xff1a; 高速邏輯與控制能力&#xff1a;UTLH21具…

Spring框架中獲取方法參數名稱:DefaultParameterNameDiscoverer

DefaultParameterNameDiscoverer 是Spring框架中用于獲取方法參數名稱的一個類。在Java中&#xff0c;方法的參數名稱通常在編譯時會丟失&#xff0c;因為Java字節碼并不強制要求保留這些信息。Spring提供了一種機制來恢復這些參數名稱&#xff0c;這就是通過DefaultParameterN…

IT行業的現狀與未來趨勢

這里寫目錄標題 一、引言二、IT行業的現狀三、IT行業面臨的挑戰四、IT行業的未來趨勢五、結論 一、引言 信息技術&#xff08;IT&#xff09;行業在過去幾十年中經歷了飛速發展&#xff0c;從早期的計算機硬件和軟件開發&#xff0c;到如今涵蓋云計算、人工智能、大數據、物聯…

深度學習之基于Django+Tensorflow卷積神經網絡實時口罩檢測系統

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景 隨著全球疫情的持續&#xff0c;佩戴口罩成為了公眾日常生活中不可或缺的一部分。特別是在人員密集的…

【python】python社交交友平臺系統設計與實現(源碼+數據庫)【獨一無二】

&#x1f449;博__主&#x1f448;&#xff1a;米碼收割機 &#x1f449;技__能&#x1f448;&#xff1a;C/Python語言 &#x1f449;公眾號&#x1f448;&#xff1a;測試開發自動化【獲取源碼商業合作】 &#x1f449;榮__譽&#x1f448;&#xff1a;阿里云博客專家博主、5…

BEVFuison測試全過程記錄

cuda版本10.1 pytorch&#xff1a; 根據cuda版本選擇pytorch版本&#xff1a; 1. 創建conda虛擬環境&#xff1a; conda create -y --name mmcv python3.8 conda activate mmcv2. 安裝依賴庫&#xff1a; pytorch: conda install pytorch1.7.1 torchvision0.8.2 torchaudi…

智能代理四大范式解析

Agent四大范式 在2024年紅杉資本人工智能峰會上,著名的人工智能專家吳恩達發表了一場備受關注的演講,深入探討了智能代理(agent)的四大范式。這四大范式代表了當前AI技術在不同應用領域中的核心方法和實踐,分別是反思(Reflection)、工具使用(Tool Use)、規劃(Planni…

特征融合篇 | YOLOv8改進之引入輕量級跨尺度特征融合模塊CCFM | 源自RT-DETR

前言:Hello大家好,我是小哥談。CCFM(Cross-Scale Feature Fusion Module)即為跨尺度特征融合模塊。這個模塊的作用是將不同尺度的特征通過融合操作整合起來,以增強模型對于尺度變化的適應性和對小尺度對象的檢測能力。CCFM可以有效地整合細節特征和上下文信息,從而提高模…

2024定制版搶單支付系統源碼(開代理自動搶單接單)

隨著網絡和移動支付技術的不斷進步&#xff0c;搶單支付系統已經成為商家和用戶進行交易的便利工具。2024定制版搶單支付系統源碼為開發者提供了一個可定制化的解決方案&#xff0c;具備開放代理和自動搶單接單功能&#xff0c;幫助用戶快速搭建搶單支付平臺。本文將為您介紹這…

專題匯編 | ChatGPT引領AIGC新浪潮(一)

ChatGPT的產生與迭代 2022年11月末,美國人工智能研究實驗室OpenAI推出ChatGPT。上線的ChatGPT只用了2個月,活躍用戶數就突破了1億,創造了應用增速最快的紀錄。 ChatGPT是什么 ChatGPT是一種人工智能技術驅動的自然語言處理(Natural Language Processing,NLP)工具,使用的…

20240520金融讀報:旅游強國金融數據要素升級融資性貿易房地產政策變化

1、房地產政策變化&#xff1a;1&#xff09;刺激買方&#xff1a;降首付&#xff0c;公積金貸款利率下調0.25%&#xff0c;商貸貸款利率不設下限 2&#xff09;托底賣方&#xff1a;“白名單”貸款項目&#xff0c;覆蓋項目建成交付的資金缺口 3&#xff09;增加賣方&#xff…

RS8751XF功能和參數介紹及PDF資料

以下是關于RS8751XF的功能和參數的介紹&#xff1a; 功能描述: 高速、寬帶單通道運算放大器 軌到軌輸入和輸出&#xff0c;確保較大的動態范圍 極高的增益帶寬乘積&#xff08;GBW&#xff09;&#xff1a;250 MHz&#xff0c;適合高頻應用 極高的壓擺率&#xff08;SR&#xf…

MySQL的ODBC驅動下載、安裝以及配置數據源

下載地址&#xff1a;odbc官方下載地址 MySQL :: Download Connector/ODBC 下載安裝ODBC驅動 配置MySQL ODBC 數據源 進入控制面板->系統和安全->Windows工具 Data Source Name填寫需要生成的ODBC數據源的名稱。Description選填。如果使用遠程數據庫服務器&a…