我查看了内核源代码,发现以下语句:
char *tagp = NULL;
/* ...CODE... */
tagp = &descriptor->b_data[sizeof(journal_header_t)];
我想知道为什么此地址存储在char指针中,而不是与它所代表的内容更相关的任何其他类型中,例如,void
如果这是不透明的。
各个案例可能有其明确的用例,但是总的来说,这有两个有用的原因。
char
指针具有相同的对齐要求作为一个void
指针。char
指针可用于访问(通过取消引用)任何其他类型的数据,从对象的最低寻址字节开始(结果的连续递增,直至对象的大小,产生指向对象其余字节的指针。) 。同样,指针是算术的(如果需要,允许在char
指针上使用,而不是在void
指针上)。因此,使用achar *
更可靠。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句