国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品
電子工程網
標題:
關于取得數組長度的問題
[打印本頁]
作者:
風溪香士
時間:
2013-4-30 19:30
標題:
關于取得數組長度的問題
寫了一個LCD12864顯示的函數,是這樣的:
void LCD12864_write(unsigned char address,unsigned char table_name[])
{
unsigned char i;
LCD12864_write_com(address);
for(i=0;i<(sizeof(table_name)/sizeof(table_name[0]));i++)
{
LCD12864_write_dat(*table_name);
table_name++;
}
}
參數address是LCD12864的顯示地址,table_name[]是要顯示的數據的數組。但是sizeof(table_name)/sizeof(table_name[0] 這句不能得到實參數組的長度,這是為什么呢?
請大家指點一下。
作者:
lelee007
時間:
2013-5-1 09:48
table_name[]
原型定義里邊沒確切給出數組長度,此時sizeof這個數組變量,意義何在?
sizeof是C的保留字,雖然看起來像是函數調用,實際并非函數調用,所以你函數中計算數組長度是在編譯時就定下來的
而你行參中并未確切給出數組長度,所以這個在編譯的時候編譯器只能根據形參數組的起始地址到下一個結束符來作為其長度,而不是在函數調用時根據你實參的起始地址到結束符來作為其長度
作者:
lelee007
時間:
2013-5-1 10:08
驗證了一下,32位linux系統里邊,gcc這種情況下是把這種不確定類型(長度不確定的數組)當作指針變量來處理了,而非上面所說從數組起始的地方到下一個結束符
作者:
lelee007
時間:
2013-5-1 10:09
從起始到結束符的計算實際還是函數處理過程,這個是我有點想當然了,呵呵,sizeof在編譯時是根據確切的數據類型來計算對象的長度的
作者:
風溪香士
時間:
2013-5-2 21:01
lelee007 發表于 2013-5-1 10:09
從起始到結束符的計算實際還是函數處理過程,這個是我有點想當然了,呵呵,sizeof在編譯時是根據確切的數據 ...
但是就算是在函數定義時將形參unsigned char table_name[]的中括號中加入9(實參長度是9),也不能得到實參數組的長度,貌似也是得到的是指針變量的長度。這該怎么辦?
作者:
fastfood
時間:
2013-5-8 13:09
許多工程師在調試串口通信時都有過困惑,通信線路上跑的數據究竟對不對?如果通信的兩端中的一端是電腦,還可以通過一些諸如“串口精靈”之類的軟件來輔助,假如通信的兩端都不是電腦,那就有點傷腦筋了。是不是?
現在,一款價廉物美的革命性的產品隆重亮相了。
串行數據分析儀套件(以下簡稱本產品)是本公司(無錫市恒運隆科技有限公司)開發的新一代串行數據采集和分析工具,由“串口數據采集器”和“串口數據分析助手”軟件組成。該套件用來幫助工程師解決RS232和RS485的調試問題。和傳統的“串口精靈”的純軟件工具不同,本產品有硬件和軟件構成,并根據應用場合不同,使用不同的“串口數據采集器”。
該產品的顯著特點如下:
• 使用硬件介入方式采集數據,保證數據的真實性
• 使用硬件隔離技術保證數據采集絲毫不影響原來通信鏈路的正常通信和數據完整性
• 精確到微秒級的數據包硬件時標,保證時序關系的正確性
• “串行數據分析助手”提供清新簡潔的用戶界面
• 具有簡單易用的軟件實時采集過濾功能
• 具有功能強大的離線數據檢索和篩選功能
• 支持從300bps到115200bps波特率以及8位數據、奇偶校驗或無校驗
該產品適用的應用場合如下:
• 需要對RS232進行調試的場合
• 需要對一般的RS485總線進行調試的場合
• 需要對PLC的RS485進行調試的場合
作者:
lelee007
時間:
2013-6-27 21:45
今天想起這個問題來,呵呵,之前都忘了這個問題的關鍵點,今天無意中翻書看到這點才想起來
C語言里邊數組做形參時,會退化成指針,這個是C規范規定,所有編譯器都會這樣來做
LZ的問題的原因就顯而易見了
作者:
hanzic
時間:
2013-7-26 08:51
樓上正解。
你這個函數有很多問題:
1、參數不要:unsigned char table_name[] 傳,[] 和 * 是有區別的,不要養成這種習慣,一些細節上會出問題的。
2、sizof()只能識別你定義的那種數組,這樣操作不行,如樓上所說。
3、LCD12864_write_dat(*table_name);
table_name++;
你都指針++了,還sizeof(指針),每次都sizeof不一樣的地址,你說會是多大的問題?就算可以計算出大小,恐怕也只有第一次能計算出來。
同時,你既然用了for循環,為什么不
LCD12864_write_dat(table_name[i]);
來訪問呢?這樣的訪問才是最安全的,指針上的強制轉換、加減操作一定要小心,指針訪問也要小心,指針操作不小心的一個失誤就會崩潰程序。養成個好習慣,不要沒事就指針++。
歡迎光臨 電子工程網 (http://m.qingdxww.cn/)
Powered by Discuz! X3.4
主站蜘蛛池模板:
久久久青草青青亚洲国产免观
|
国产理论视频
|
日本精品久久久久中文字幕
|
国产美女福利在线
|
成人久草
|
欧美va亚洲va香蕉在线
|
欧美黑人玩白人巨大极品
|
久久国产亚洲欧美日韩精品
|
亚洲欧美在线观看
|
污污视频网站免费在线观看
|
成人在线视频一区
|
免费在线黄视频
|
国产精品国产三级国产专不∫
|
亚洲天堂久久
|
精品免费在线视频
|
澳门毛片精品一区二区三区
|
久久精品资源
|
99re8在线这里只有精品
|
欧美一级黄色片
|
日韩一区二区在线视频
|
福利院肉动漫视频在线观看
|
成在线人免费视频一区二区三区
|
91短视频在线观看免费
|
中文有码在线
|
国产精品99久久免费观看
|
日韩亚洲人成网站在线播放
|
日韩国产免费一区二区三区
|
成人尤物
|
亚洲欧美日韩中文字幕在线一区
|
成年男女免费视频网站
|
久久精品店
|
成人国产精品毛片
|
欧美一区二区手机在线观看视频
|
四虎影视www四虎免费
|
亚洲欧美专区精品久久
|
一区国产传媒国产精品
|
精品精品国产高清a级毛片 精品精品国产yyy5857香蕉
|
精品卡一卡2卡三卡免费
|
黄床大片30分钟免费看费
|
久久香蕉国产线看观看99
|
欧美日韩1区2区
|