字符数组长字符数组
问题描述:
我想再次转换为字符数组一个长期而回,但我有点卡住了。
这是到目前为止我有代码的一个片段:
char mychararray[4] = {'a', 'b', 'c', 'd'};
unsigned long * mylong = (unsigned long *)&mychararray;
cout << *mylong << endl;
哪个应该采取的字符数组,并且表示第一个4个字节(一个长的长度),其为长(I认为)。
这是正确的吗?我将如何撤消它以获取char数组?
感谢您的帮助。
编辑:第三行是一个错字 - * mychararray应该是* mylong
答
- 你假设
sizeof(long) == 4
,这可能是错误的。 (特别是在64位平台上)。如果这个假设被破坏了,那么你处于未定义的行为区域:操作mylong
将会在mychararray
的分配内存之外进行读/写操作。 -
您的第二行有没有效果,如果你不上第三行使用*mylong
你可以拿回char*
的东西,如:
char *thing = reinterpret_cast<char*>(mylong);
(你应该使用在第一种情况下,这种类型的演员也比C型演员更明确。)
答
另一件值得注意的事情是如果涉及多台机器,CPU的永久性。如果他们不同,你最终会得到相反的结果。
我不明白你你做了什么 Dair 2011-06-17 05:25:33
这里的目标是什么? – 2011-06-17 05:49:15