pointers - C指针嵌套

标签 pointers

我无法理解来自 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/

相关文章:

c - 如何为我的 char 指针分配内存?

c - 术语 : what's a pointer?

c - 如何在不破坏严格别名的情况下通过缓冲区传递此指针?

c - 如何使用内存模型图计算代码的o/p?为什么会出现段错误?

c++ - 对象指针赋值的指针 vector 的一个元素

c - for 循环中的段错误

c - 二叉树实现: issues with insert_tree()

c - 如何存储函数的全局值?

c++ - 智能指针如何影响5的规则?

pointers - 隐藏 nil 值,理解为什么 golang 在这里失败