为什么在内核代码中某些变量地址存储在char指针中?

农民

我查看了内核源代码,发现以下语句:

char *tagp = NULL;

/* ...CODE... */

tagp = &descriptor->b_data[sizeof(journal_header_t)];

我想知道为什么此地址存储在char指针中,而不是与它所代表的内容更相关的任何其他类型中,例如,void如果这是不透明的。

苏拉夫·戈什(Sourav Ghosh)

各个案例可能有其明确的用例,但是总的来说,这有两个有用的原因。

  • 一个char指针具有相同的对齐要求作为一个void指针。
  • char指针可用于访问(通过取消引用)任何其他类型的数据,从对象的最低寻址字节开始(结果的连续递增,直至对象的大小,产生指向对象其余字节的指针。) 。同样,指针是算术的(如果需要,允许在char指针上使用,而不是在void指针上)。

因此,使用achar *更可靠。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将变量地址存储在内存中

来自分类Dev

指针的地址将存储在内存中的什么位置?

来自分类Dev

为什么可以将未初始化的变量地址传递给函数的指针参数

来自分类Dev

将char指针的地址存储在C中的char指针中

来自分类Dev

使用指针的变量地址

来自分类Dev

printf中变量地址的输出

来自分类Dev

为什么数组的指针地址与该指针中存储的数据相同?

来自分类Dev

全局指针变量如何存储在内存中?

来自分类Linux

如何在内核中解释地址

来自分类Dev

在下面与指针及其输出相关的 C 代码中,为什么值 a[1] 即 20 不存储在连续地址 de9 中?

来自分类Dev

为什么不能在cpp中取消引用向量地址的引用?

来自分类Dev

为什么垃圾值存储在与其在C代码中的地址相同的地址

来自分类Dev

为什么R将循环变量/索引/虚拟对象存储在内存中?

来自分类Dev

指针地址和指针指向的变量地址

来自分类Dev

在 C 中将指针变量作为函数参数而不是变量地址传递有什么问题?

来自分类Dev

C 中的函数参数和变量地址

来自分类Dev

明确定义变量地址(在Go中)

来自分类Dev

变量地址需要加载到内存中吗?

来自分类Dev

在 Node.js 中读取环境变量地址

来自分类Dev

为什么在此golang代码段中,指向WaitGroup的指针的地址不同?

来自分类Dev

为什么在Rust中修改字符串变量时指针的地址没有改变?

来自分类Dev

为什么内核,ramdisk的加载地址在引导中很重要?

来自分类Dev

我的变量存储在内存中的什么位置?

来自分类Dev

变量地址的地址

来自分类Java

为什么数组引用变量不能保存Java中char数组的地址?

来自分类Dev

为什么String引用变量在Java中存储字符串而不是地址?

来自分类Dev

为什么我不能在“ Prolog + C”中存储一个变量的地址?

来自分类Dev

如何知道在内核中启用什么?

来自分类Dev

为什么Linux内核中的KCOV代码中存在barrier()?

Related 相关文章

  1. 1

    将变量地址存储在内存中

  2. 2

    指针的地址将存储在内存中的什么位置?

  3. 3

    为什么可以将未初始化的变量地址传递给函数的指针参数

  4. 4

    将char指针的地址存储在C中的char指针中

  5. 5

    使用指针的变量地址

  6. 6

    printf中变量地址的输出

  7. 7

    为什么数组的指针地址与该指针中存储的数据相同?

  8. 8

    全局指针变量如何存储在内存中?

  9. 9

    如何在内核中解释地址

  10. 10

    在下面与指针及其输出相关的 C 代码中,为什么值 a[1] 即 20 不存储在连续地址 de9 中?

  11. 11

    为什么不能在cpp中取消引用向量地址的引用?

  12. 12

    为什么垃圾值存储在与其在C代码中的地址相同的地址

  13. 13

    为什么R将循环变量/索引/虚拟对象存储在内存中?

  14. 14

    指针地址和指针指向的变量地址

  15. 15

    在 C 中将指针变量作为函数参数而不是变量地址传递有什么问题?

  16. 16

    C 中的函数参数和变量地址

  17. 17

    明确定义变量地址(在Go中)

  18. 18

    变量地址需要加载到内存中吗?

  19. 19

    在 Node.js 中读取环境变量地址

  20. 20

    为什么在此golang代码段中,指向WaitGroup的指针的地址不同?

  21. 21

    为什么在Rust中修改字符串变量时指针的地址没有改变?

  22. 22

    为什么内核,ramdisk的加载地址在引导中很重要?

  23. 23

    我的变量存储在内存中的什么位置?

  24. 24

    变量地址的地址

  25. 25

    为什么数组引用变量不能保存Java中char数组的地址?

  26. 26

    为什么String引用变量在Java中存储字符串而不是地址?

  27. 27

    为什么我不能在“ Prolog + C”中存储一个变量的地址?

  28. 28

    如何知道在内核中启用什么?

  29. 29

    为什么Linux内核中的KCOV代码中存在barrier()?

热门标签

归档