指標移動任意位元組數

2021-04-21 11:20:58 字數 386 閱讀 2779

最近在碰到乙個問題,先定義兩個結構體:

struct pt_2d 

;struct pt_3d: public pt_2d

;void draw(pt_2d *pts,int num)

要在draw函式中將num個點繪製出來,在draw函式裡進行的任何操作真是對pt_2d指標的,因此,如果傳入乙個pt_3d就會出現問題pts++將只會向後移動sizeof(pt_2d)個位元組,其實這是乙個很顯然的問題,只是在潛意識裡將指標智慧型化了!

怎麼解決這個問題呢?如下:

//sizeofstep為傳入指標的移動步幅

void draw(pt_2d *pts,int num,int sizeofstep)

指標的++運算所後移的位元組數由指標型別決定。

關於指標型別占用的位元組數

如果cpu是32位,記憶體是cpu能夠直接訪問的區域,cpu每次處理的資料也是32位,那cpu能夠直接訪問的記憶體大小就是2的32次方,也就是4gb,所以一般我們實用的台式電腦大多數的記憶體上線都是4gb.乙個位址是32位,任何指標都是乙個位址,所以就是占用4byte 32位 在不同的硬體平台上,指...

各變數位元組數

win64,也就是x64編譯配置下 char 1位元組 short 2位元組 int 4位元組 long 4位元組 long long 8位元組 float 4位元組 double 8位元組 long double 8位元組 wchar t 2位元組 bool 1位元組 指標都是8位元組 char ...

unity AssetBundle位元組陣列加密

1.加密 對assetbundle的位元組陣列每位進行與key的異或處理 相同為0,不同為1 using system using system.collections.generic using system.io using system.linq using system.text names...