我知道: char *是一个指向char的指针。 和 int *是一个指向int的指针。char *的大小与int *的大小相同吗?
所以,我想确认以下两件事情:
所以现在假设我是32位的机器上,那么这意味着内存地址是32位宽。 因此,这意味着char *和int *的大小都是32位(4个字节),对不对? 也是char * *的大小也与int *的大小相同?
假设我有: int * ptr;
因此现在做*((char * *)ptr)= 0x154与*((int *)ptr)= 0x514相同,对吗? (0x514只是任意的随机存储器地址)
平台:我在x86上。
P.S .:我知道类型转换不是一种建议的编码方式。但我正在做内核编码,因此我必须进行类型转换!
即使标准没有说出来,我怀疑它会很容易找到一个实际上不同的环境。 – Mysticial 2013-02-16 17:40:12
尽管它们的尺寸在实践中相同,但它们的对齐要求不是。 – DCoder 2013-02-16 17:41:19
如果您正在执行“内核编码”,那已经限制了代码可以运行的平台数量。检查OS规范支持的内容。 – 2013-02-16 22:01:36