結構\指標\雙重指標
今天寫C++ code,對 雙重指標有新想法
首先
先定義一個structure形式
struct Button{
char* Name;
int Offset;
int Bits;
} ;
然後定義一個Button 結構的資料 Button1
Button Button1= {"Test",1,2}
如果要存取Button1的元素,只要 Button1.Name 即可
假如要使用指標完成任務,
可以宣告一個 Button 指標去指向
Button* pButtonSelect1 = &Button1;
使用pButtonSelect1->Name 可得到類似效果
如果有兩個以上,想建立一個 Table,利用動態去選擇呢?
是Button* ButtonTable[]= {Button1,Button2}?
我記得編譯的時候有問題,那麼使用 Button** ButtonTable = {Button1,Button2 } ?
似乎也不行
如果程式中有陣列又有指標, 而且不是簡單的 int matrix1[ ] 或 int * matrix ,
很多人常常會搞混,如果又碰到特殊功能 , 譬如函數或物件的 時候.....簡直就一團亂
我也一天到晚搞混
不過複雜的事,如果能化簡單好記,那麼結果就不一樣
我之前寫過 函數的指標表單化,物件上實際上也是
回到兩個Button的表單化
不需要一下子要把陣列跟雙重指標連結
把每一個層級一個分開
建立一個指標去 連結 物件
再建一個雙重指標 去連結指標(指標放在一個陣列中)
實際上的狀況就變成以下的程式碼
//建立結構
struct Button{
char* Name;
int Offset;
int Bits;
} ;
//建立雙重指標
Button** ppButtonSelect = NULL;
//建立物件
Button Button1= {"Test1",1,2};
Button Button2= {"Test2",3,4};
//指標連結物件
Button* pButtonSelect1 = &Button1;
Button* pButtonSelect2 = &Button2;
//建立一個指標的陣列
Button* ButtonTable[]= {pButtonSelect1,pButtonSelect2};
//雙重指標連結陣列
*ppButtonSelect = ButtonTable[Index];
//使用元素
(**ppButtonSelect).Name
首先
先定義一個structure形式
struct Button{
char* Name;
int Offset;
int Bits;
} ;
然後定義一個Button 結構的資料 Button1
Button Button1= {"Test",1,2}
如果要存取Button1的元素,只要 Button1.Name 即可
假如要使用指標完成任務,
可以宣告一個 Button 指標去指向
Button* pButtonSelect1 = &Button1;
使用pButtonSelect1->Name 可得到類似效果
如果有兩個以上,想建立一個 Table,利用動態去選擇呢?
是Button* ButtonTable[]= {Button1,Button2}?
我記得編譯的時候有問題,那麼使用 Button** ButtonTable = {Button1,Button2 } ?
似乎也不行
如果程式中有陣列又有指標, 而且不是簡單的 int matrix1[ ] 或 int * matrix ,
很多人常常會搞混,如果又碰到特殊功能 , 譬如函數或物件的 時候.....簡直就一團亂
我也一天到晚搞混
不過複雜的事,如果能化簡單好記,那麼結果就不一樣
我之前寫過 函數的指標表單化,物件上實際上也是
回到兩個Button的表單化
不需要一下子要把陣列跟雙重指標連結
把每一個層級一個分開
建立一個指標去 連結 物件
再建一個雙重指標 去連結指標(指標放在一個陣列中)
實際上的狀況就變成以下的程式碼
//建立結構
struct Button{
char* Name;
int Offset;
int Bits;
} ;
//建立雙重指標
Button** ppButtonSelect = NULL;
//建立物件
Button Button1= {"Test1",1,2};
Button Button2= {"Test2",3,4};
//指標連結物件
Button* pButtonSelect1 = &Button1;
Button* pButtonSelect2 = &Button2;
//建立一個指標的陣列
Button* ButtonTable[]= {pButtonSelect1,pButtonSelect2};
//雙重指標連結陣列
*ppButtonSelect = ButtonTable[Index];
//使用元素
(**ppButtonSelect).Name
留言