在C中,我可以定義一個指針到一個這樣的數組:在不安全的C#使用指針陣列
char b1[SOME_SIZE];
char (*b3)[3]=(char(*)[3])b1;
使得b3[i][j] == b1[i*3+j]
。
我可以在C#中聲明這樣一個指針,b3
,在unsafe
?
我的目的是訪問位渠道:
///...
unsafe {
//...
byte *target; //8bpp
byte (*source)[3]; //24bpp
//...
target[x]=(source[x][0]+source[x][1]+source[x][2])/3;
//...
我希望通過這種方式,使用source[x][ch]
代替source[x*3+ch]
得到一些編譯器優化。
希望基於優化沒有任何意義真。您可以製作一個指針'byte * []',但它可能不是您想要的 - [查看文檔](http://msdn.microsoft.com/zh-cn/library/y31yhkeb.aspx)。 – BartoszKP
@BartoszKP也許你是對的,我可能是過度優化!我的觀點是,在C/C++中,良好的聲明通常對較重的代碼提供更好的性能(和易讀性),因爲編譯器可以優化前者而不是後者。 –
在C#[this](http://stackoverflow.com/a/1563170/2642204)中,推薦使用位圖處理性能。 – BartoszKP