熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C語言之extern聲明辨析[1]

2013-11-13 12:16:32  來源: .NET編程 
     基本解釋

  extern可以置於變量或者函數前以標示變量或者函數的定義在別的文件中提示編譯器遇到此變量和函數時在其他模塊中尋找其定義

  另外extern也可用來進行鏈接指定


   問題extern 變量

  在一個源文件裡定義了一個數組

char a[];
  在另外一個文件裡用下列語句進行了聲明

extern char *a


  請問這樣可以嗎?

  答案與分析

  )不可以程序運行時會告訴你非法訪問原因在於指向類型T的指針並不等價於類型T的數組extern char *a聲明的是一個指針變量而不是字符數組因此與實際的定義不同從而造成運行時非法訪問應該將聲明改為extern char a[ ]

  )例子分析如下如果a[] = abcd則外部變量a=x (abcd的ASCII碼值)*a顯然沒有意義如下圖

  顯然a指向的空間(x)沒有意義易出現非法內存訪問

  )這提示我們在使用extern時候要嚴格對應聲明時的格式在實際編程中這樣的錯誤屢見不鮮

  )extern用在變量聲明中常常有這樣一個作用你在*c文件中聲明了一個全局的變量這個全局的變量如果要被引用就放在*h中並用extern來聲明

[]  []  


From:http://tw.wingwit.com/Article/program/net/201311/15556.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.