[英]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.