標題: 【問題】關于51指針的程序錯誤,求解答 [打印本頁]

作者: 安好    時間: 2017-2-26 16:37
標題: 【問題】關于51指針的程序錯誤,求解答

這個是按書上寫的程序
*ptrTxd 和 array1[]都是定義成unsigned char型的
但是編譯的時候卻被警告(ptrTxd = array1;警告錯誤),并且程序下載到單片機里并沒有實現(xiàn)相應的功能


然后我把ptrTxd = array1;改成了ptrTxd =& array1[0];就沒有警告了,并且程序的結果是對的。



但是這兩種數(shù)組元素指針的表達是等價的,都是對的。所以不太明白其中出現(xiàn)了什么問題!
有知道的大神幫忙解答一下嗎?謝謝了!





作者: utzuzu    時間: 2017-2-27 15:41
應該是51的C編譯器特性,和標準C在編譯處理上有很大的差異。
作者: zl2168    時間: 2017-2-27 16:27
本帖最后由 zl2168 于 2017-2-27 16:37 編輯

一般的程序何必一定要用指針?有些單片機教材說:沒有掌握指針,就等于沒有掌握c語言,真是聳人聽聞,令初學者望而生畏。
對一般c語言應用,似乎還有些道理。對c51編程,就沒有道理!中小規(guī)模應用程序,包括不很復雜的大規(guī)模應用程序,不用指針,完全可以應付。例如,張志良編著的《80C51單片機仿真設計實例教程——基于Keil C和Proteus》清華大學出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機應用100案例,一個也未用指針,用數(shù)組不是照樣實現(xiàn)各種較復雜的功能?原因是什么?因為80C51單片機本身具有間址功能。

作者: pang122    時間: 2017-2-27 16:34
表示我也遇到過這個問題
作者: pang122    時間: 2017-2-27 16:35
表示我也遇到過這個問題
作者: 安好    時間: 2017-3-1 12:09
好像是編譯器的問題,同樣的把array1強制類型轉(zhuǎn)換(unsigned char *)一樣可以,結果也正確。

作者: 安好    時間: 2017-3-1 12:10
utzuzu 發(fā)表于 2017-2-27 15:41
應該是51的C編譯器特性,和標準C在編譯處理上有很大的差異。

嗯嗯,確實。我把array1強制類型轉(zhuǎn)換就對了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1