简体   繁体   English

需要帮助理解指针变量赋值

[英]Need help understanding pointer variable assignments

I'm not good at advanced C++ scripts. 我不擅长高级C ++脚本。 I have tried to find out more about the following variable assignments without success. 我试图找到更多有关以下变量赋值的信息,但没有成功。 Please explain them or give me a source to study similar statements. 请解释一下或给我一个研究类似陈述的来源。

rand_seed = *(int*)input_buffer_ptr;
moving_input_ptr = (BYTE*)((int*)input_buffer_ptr + 1);

(Considering that int is 4 bytes) (考虑到int是4个字节)

Imagine RAM as a long line of bytes (because it is): 想象一下RAM作为一长串字节(因为它是):

RAM: .... [8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit] ....

and SOME_TYPE* as the pointer on some byte: SOME_TYPE*作为某个字节的指针:

.... [8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit] ....
           ^
      input_buffer_ptr

int* means that you treat data under this pointer as integer (number of size 4 bytes) int*表示您将此指针下的数据视为整数(大小为4个字节的数字)

So if you have pointer SOME_TYPE* input_buffer_ptr 所以如果你有指针SOME_TYPE* input_buffer_ptr

(int*)input_buffer_ptr; // casts this pointer to int*, 
     //so now you treat data under this pointer as 4 bytes integer

then: 然后:

*(int*)input_buffer_ptr; // operator * before pointer gets data under 
          //that pointer, in this case, integer (4 bytes).

So rand_seed is integer and has value: 所以rand_seed是整数并且有值:

.... [8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit] ....
           |      random_seed     |

Then: 然后:

     (int*)input_buffer_ptr + 1
//    ^                     ^
// casting to int*      moving pointer to size of int (4 bytes)

So: 所以:

.... [8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit] ....
                                   ^
                         ((int*)input_buffer_ptr + 1)

And then: 然后:

 (BYTE*)((int*)input_buffer_ptr + 1);
// ^
// casting pointer to BYTE*, so it points to the same place
// but now treated as one byte pointer.

so if you try this: 所以如果你试试这个:

BYTE a = *(BYTE*)((int*)input_buffer_ptr + 1);

you will get one byte variable with value: 你会得到一个带有值的字节变量:

.... [8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit][8bit] ....
                                   |  a  |

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM