12.3 C語言指標的簡單示例
阿新 • • 發佈:2019-02-03
前邊我們提到了,指標的意義往往在小程式裡是體現不出來的,對於簡單程式來說,有時候用了指標,反而可能比沒用指標還麻煩,但是為了讓大家鞏固一下指標的用法,我還是寫了個使用指標的流水燈程式,目的是讓大家從簡單程式開始瞭解指標,當程式複雜的時候不至於手足無措。
此外再強調一句,只要是*p 前邊帶了變數型別如 unsigned char,就是表示定義了一個指標變數 p,而執行程式碼中的*p,是指 p 所指向的內容。
通過理論的學習和這樣一個例程,我想大家對指標應該有概念了,至於它的靈活應用,需要我們在後邊的程式中慢慢去體會,理論上就不再過多贅述了。
- #include <reg52.h>
- sbitADDR0 = P1^0;
- sbitADDR1 = P1^1;
- sbitADDR2 = P1^2;
- sbitADDR3 = P1^3;
- sbitENLED = P1^4;
- void ShiftLeft(unsigned char *p);
- void main(){
- unsigned int i;
- unsigned char buf = 0x01;
- ENLED = 0; //使能選擇獨立 LED
- ADDR3 = 1;
- ADDR2 = 1;
- ADDR1 = 1;
- ADDR0 = 0;
- while (1){
- P0 = ~buf; //緩衝值取反送到 P0 口
- for (i=0; i<20000; i++); //延時
- ShiftLeft(&buf); //緩衝值左移一位
- if (buf == 0){ //如移位後為 0 則重賦初值
- buf = 0x01;
- }
- }
- }
- /* 將指標變數 p 指向的位元組左移一位 */
- void ShiftLeft(unsigned char *p){
- *p = *p << 1; //利用指標變數可以向函式外輸出運算結果
- }
此外再強調一句,只要是*p 前邊帶了變數型別如 unsigned char,就是表示定義了一個指標變數 p,而執行程式碼中的*p,是指 p 所指向的內容。
通過理論的學習和這樣一個例程,我想大家對指標應該有概念了,至於它的靈活應用,需要我們在後邊的程式中慢慢去體會,理論上就不再過多贅述了。