<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > (*(void(*)())0) ()講解-單片機(jī)另類的復(fù)位

          (*(void(*)())0) ()講解-單片機(jī)另類的復(fù)位

          作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏
          硬件地址跳到0處

          (*(void(*)())0)();

          本文引用地址:http://www.ex-cimer.com/article/201611/323698.htm

          預(yù)備知識(shí)

          float (*h)();

          表示h是一個(gè)指向返回值float類型的函數(shù)的指針

          (float(*)())

          表示一個(gè)"指向返回值float類型的函數(shù)的指針"的類型轉(zhuǎn)換符

          假設(shè)fp是一個(gè)函數(shù)指針,那么如何調(diào)用fp所指向的函數(shù),調(diào)用方法如下:

          (*fp)();

          按照人們的慣性思維,那么我們可以這樣寫

          (*0)();

          上式不能生效,因?yàn)檫\(yùn)算符*必須要一個(gè)指針來(lái)做操作數(shù),而且這個(gè)指針還必須是個(gè)函數(shù)指針。所以我們必須要把0強(qiáng)制轉(zhuǎn)換成一個(gè)函數(shù)指針(指向返回值為void類型的函數(shù)的指針)

          假設(shè)fp是個(gè)float指針,聲明如下

          float * fp;

          把0強(qiáng)制轉(zhuǎn)換成一個(gè)float指針(把變量fp去掉就可以了)

          (float *)0;

          類似:

          假設(shè)fp是函數(shù)指針為void類型的函數(shù)的指針),聲明如下:

          void (*fp)();

          把0強(qiáng)制轉(zhuǎn)換成該函數(shù)指針(變量fp去掉就可以了)

          (void(*)())0

          最后用(void(*)())0代替fp,從而得到調(diào)用的用法

          (*(void(*)())0)();

          可用typedef簡(jiǎn)化函數(shù)指針

          例如:

          typedef char * string;

          string test="hello";

          類似

          typedef void(*func)(); //這樣func就表示一個(gè)函數(shù)指針的類型

          (*(func)0)();

          例子

          方法一:

          typedef void (*pfunction)(void);

          void FMI_Jump(void)
          {
          pfunction jump;
          jump=(pfunction)(0x80000);
          jump();

          }

          方法二:

          ((void(code *)(void))0xF400)();



          關(guān)鍵詞: void單片機(jī)的復(fù)

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();