程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> extern 數組

extern 數組

編輯:C++入門知識

最近比較關注C++對象的Linkage類型,然後今天突然想起extern數組這個奇葩的東西,稍微折騰了一下,順手寫個隨筆。

首先在cpp中定義幾個數組:

  extern_array[] = {,,,,  extern_array_normal[] = {,,,,    extern_array_normal_const[] = {,,,,};

 

然後再另一個cpp中使用:

 *   extern_array_normal[   _tmain( argc, _TCHAR* address = reinterpret_cast<>(& first   = *reinterpret_cast<*> second  = *reinterpret_cast<*>(address +  * ( third   = *reinterpret_cast<*>(address +  * (* address_ptr = reinterpret_cast<*>(&= address_ptr[= address_ptr[= address_ptr[ normal_first    = extern_array_normal[ normal_second   = extern_array_normal[ normal_third    = extern_array_normal[ normal_first_const    = extern_array_normal_const[ normal_second_const   = extern_array_normal_const[ normal_third_const    = extern_array_normal_const[= 

     

上面的Demo簡單演示了extern數組各種使用的方法。

但是有種奇葩的情況是:

  * extern_array;

extern_array的內容實際上在Link處理完之後,竟然變成了extern_array[]首地址。也就是說在另一個文件中通過extern_array[index](也就是*(extern_array + 1)),

相當於    “extern_array的值 + index * sizeof(int)" 得到的value值,然後再解引用*value。假設index = 0,那麼value的值為0x0000000A, 解引用。。。然後發生神馬事情,不用說都知道,那麼低的地址(空指針賦值地址分區)。。。。。。。

那extern int extern_array*豈不是不可以用了,雖然以下做法並不推薦,但是如果你真想用這個方法的話,可以先取extern_array得地址,然後保存到一個指向int的指針當中,這樣就可以還原數組(或者指針)尋址的操作。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved