我无法理解来自 CCS C 编译器的代码。代码是:
addr[0] = *(((char*)&block_number)+2);
我猜“&block_number
”是名为“block_number”的变量的地址。之后我迷路了。
最佳答案
让我们把它分开:
*(ptr+2)
相当于:
ptr[2]
这里,ptr
是一个char*
,指向block_number
的地址。
所以说 block_number
是这样一个结构的实例:
struct {
char a;
char b;
char c;
char d;
} block_number
然后 addr[0]
将包含 c
的值(假设这些值之间没有空格)。这是因为指向 block_number
的指针被转换为 char*
,然后像数组一样进行索引。
基本上,这会读取 block_number
中的第三个字节。
关于pointers - C指针嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14114613/