① 單片機c語言怎樣用指針訪問code區數組中的某一元素
void
CHcnkDlg::OnButton1()
{
//
TOD
Add
your
control
notification
handler
code
here
char
str[8];
//定義一個字元串數組
,用來存放列表框1中輸入的內容
char
*ptr;
//定義一個指針,用來處理字元串數組中的元素
char
cResult[8];
//定義一個字元串,用來存放列表框1中的數據經過處理後顯示在列表框2中的
內容
m_List1.GetLBText(str,;
//調用GetLBText()函數,獲得列表框1輸入的內容,存放在字元串
數組str
中
ptr=str+2;
*ptr=0;
m_List2=(LPCTSTR)cResult;
//將結果字元串賦給對象m_List2
UPdateData(FALSE);
//更新屏幕
}
希望可以幫助到你
② 學了51單片機,感覺沒怎麼用到指針,什麼時候才用到指針
不用都可以。我現在只有做顯示電路驅動時用指針取下字型檔或數據,其餘的什麼函數指針,指針嵌套之類的全沒用到。但不影響我的工作。
上位機我會的不多,用的是BCB,但我自己不會主動用指針,一般都是復制來的程序或系統APP函數里用的多點。
指針一般是上位機軟體或大型單片機程序才用的多些,好處就是程序的表述上更好看或更方便調用,對於小程序完全可以不用。
③ //SP=0x60; 為什麼在有些單片機函數中要設置棧指針,設置棧指針有什麼作用SP又是什麼東西呢 先謝了!
棧指針是用來在棧空間定址的,而棧空間其實就是個內存區域,在棧中存入數據的話,sp自動減少,在棧中讀取數據的話,sp自動增加,這就構成了一個後進先出的內存空間
sp其實是一個寄存器,其中只能保存一個指針,而這個指針就指向了棧空間中的最高層,即棧頂
④ 【單片機】 知道函數的地址怎麼調用
還需要知道函數的調用規則,比如:
int fun1(int a,int b) { return a+b; }
int fun2(int a,int b) { return a-b; }
typedef int (*pfun)(int,int);
#define MYFUNCTION1 0x80002000 //假設函數fun1的地址位於0x80002000
#define MYFUNCTION2 0x80003000 //假設函數fun2的地址位於0x80003000
void main()
{ int a=2,b=1,c;
fun=(pfun)MYFUNCTION1; c=(*fun)(a,b);
fun=(pfun)MYFUNCTION2; c=(*fun)(a,b);
}
⑤ C語言的指針,在寫51單片機程序用得上嗎
可以的。
在51單片機的嵌入式C語言中,指針同樣是被支持的。
所以在單片機上一樣可以使用指針操作,具體使用方法,與標准C語言並沒有不同。
不過需要注意的是,使用指針代表著間接定址,相對變數的直接定址,速度要稍慢一些。而單片機運算速度較慢,大量使用指針有可能會降低執行效率,影響效果。所以除非必要,還是少用指針。
⑥ 51單片機函數參數傳指針方式錯誤的問題
主函數就5句話,分別用1、2、3、4、5標識。
你在第1,2句定義了變數並賦值,但是,在第3、4句的時候可能會把第1、2句的東西給誤覆蓋了。因為地址可能有重疊。
可以用兩種辦法去調試:
方法1:在第1、2句只定義變數,不賦值,在第4、5句之間加上這兩句話:a='t';p=&t;
方法2:在DrawSingleAscii內部這三行之後,加上一句:
uchar i, j;
uchar str;
uint OffSet;
*pAscii = 't'; //加上這句
看看是什麼效果。
⑦ 51單片機中,指針函數 在C語言程序 如何使用
你好,比較方便的實現方式是在函數的外部申請數組;在調用函數的時候傳入數組的地址進行操作。如果一定要在子函數內部申請空間並返回地址,那麼需要在子函數內部動態申請內存空間。具體的方法一般是使用標准庫中的malloc函數。對於c51函數庫,參考這個鏈接:http://www.keil.com/support/man/docs/c51/c51_malloc.htm
⑧ 單片機C51,C語言的一個指針問題
P0 = *((uint8 data*)&ledBuff+i);
ledBuff是緩沖區的起始位置,它的類型你可以從函數外面看到,因為它是一個全局變數。
&ledBuff是取ledBuff的地址,
(uint8 data*)&ledBuff是把取得的地址強制轉換為uint8 data類型的指針。
((uint8 data*)&ledBuff+i是將這個指針位移,偏移量是i
*((uint8 data*)&ledBuff+i)最後加*號是將便宜後的地址中的值取出來,最終賦值給了P0.
這里P0是一個埠。