欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2347|回復: 0
打印 上一主題 下一主題
收起左側

強制類型轉換 類型的本質 指針的本質 函數指針

[復制鏈接]
跳轉到指定樓層
樓主
ID:105323 發表于 2016-2-13 00:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
昨天給朋友講了 3個問題,
A〉什么是函數指針,本質是?指針的本質?
B〉什么是類型,類型的本質是?
C〉什么是強制類型轉換,本質是?作者 張世光 億通科技軟件部 060913 QQ:87895224 MSN:Z_55@hotmail.com
A〉什么是函數指針,本質是?指針的本質?

   voidfun();  //函數聲明
   void(*ptrfun)();//函數指針變量ptrfun 的聲明,表明ptrfun這個指針指向一個 voidfun()函數類型的函數地址。
〉函數的名字 代表函數的地址;
所以,可以這樣
  ptrfun =fun ;//給ptrfun賦值。此時,ptrfun 就是 fun函數的別名;
  在需要調用 fun()的地方,可以這樣寫
  (*ptrfun)(); //等同于 fun();//這就是別名的意義。
指針的本質是一個固定長度(32位系統上是4個byte)的空間中放置的內容是一個內存地址
而指針類型的本質就是對這個地址的解釋方式。不同的指針類型,對即使相同的內存地址的解釋是不同的,受影響的空間大小也不同。受影響的空間的大小等于sizeof(類型)。
  如 short i=0x1234;
  short * psort = &i;
  char *pchar = &i; //此時pshort ==pchar;即指向了同一個地址;
  那么 (*pshort) 和 (*pchar)的值各是什么?
  假設 sizeof(short)==2
      sizeof(char)==1

  假如內存中這樣:
  ---地址 0x1000--
|     0x34   |
  ----------------
|     0x12   |
  ----------------
  那么,psort==0x1000 ,同時,pchar==0x1000 ;
  那么,(*psort) 代表是 地址0x1000 和 0x1001這兩個字節的內容; <-----由其類型決定
       (*pchar)代表 地址0x1000這一個字節的內容;        <<-----由其類型決定


B〉什么是類型,類型的本質是?
  類型是我們為了方便有效利用內存來表達我們的意思而作的語言上的區分,看上面的解釋就可以了解為何有類型區分。這里我想講另一個類型相關問題。
  有人問    TypeDef void (*PtrFun)();
          和 void (*ptrfun)(); 有什么區別?
   看使用方式,
PtrFun pfun;
void fun();
pfun = ptrfun = fun;

   由上面可以看出 PtrFun是類型,而ptrfun是一個變量 。
  使用方式自然也有差別,PtrFun 用來定義函數指針變量。而ptrfun已經是一個函數指針變量,可以直接賦值使用。
     (*pfun)();
     (*ptrfun)();  //

C〉什么是強制類型轉換,本質是?
強制類型轉換 的本質是程序員告訴編譯器“你不用擔心,這里的類型變化是正確的”。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表