溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C言語指針的復(fù)雜示例

發(fā)布時間:2020-06-22 19:48:37 來源:網(wǎng)絡(luò) 閱讀:536 作者:yuw2018 欄目:網(wǎng)絡(luò)安全

前邊我們提到了,指針的意義常常在小程序里是表現(xiàn)不出來的,關(guān)于復(fù)雜程序來說,有時分用了指針,反而能夠比沒用指針還費事,然則為了讓人人穩(wěn)固一下指針的用法,我照樣寫了個運用指針的流水燈程序,目標(biāo)是讓人人從復(fù)雜程序開端理解指針,當(dāng)程序復(fù)雜的時分不至于不知所措。

			#include <reg52.h> sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = 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 指向的字節(jié)左移一位 */ void ShiftLeft(unsigned char *p){ *p = *p << 1; //應(yīng)用指針變量可以向函數(shù)外輸入運算后果 }

這是一個運用指針完成流水燈的例子,地道是為了講指針而寫如許一段程序,程序中傳遞的是 buf 的地址,把這個地址直接傳遞給函數(shù) ShiftLeft 的形參指針變量 p,也就是 p 指向了 buf。比照之前的函數(shù)挪用,人人能否看明確,假如是通俗變量傳遞,只能單向的,也就是說,主函數(shù)傳遞給子函數(shù)的值,子函數(shù)只能運用卻不克不及改動。而如今我們傳遞的是指針,不只僅子函數(shù)可以運用 buf 里邊的值,并且還可以對 buf 里邊的值停止修正。
此外再強調(diào)一句,只需是*p 前邊帶了變量類型如 unsigned char,就是表現(xiàn)界說了一個指針變量 p,而履行代碼中的*p,是指 p 所指向的內(nèi)容。
經(jīng)過實際的進(jìn)修和如許一個例程,我想人人對指針應(yīng)當(dāng)有概念了,至于它的靈敏使用,需求我們在后邊的程序中漸漸去領(lǐng)會,實際上就不再過多贅述了。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI