2013-04-04 84 views
0

我正在做一些练习来弄清楚如何在数组被指针更改后访问数组中的值。有人能指出为什么第一个输出不显示所需的输出吗?我试图通过使用数组中指针并将char数组转换为int

int main() 
{ 
    char myArray[50]={0}; 
    short* sizeOfAlloc=(short*)(myArray+5); 
     *sizeOfAlloc=1234; 

    cout << (short*)(myArray+5) <<endl; 
    cout << *sizeOfAlloc <<endl; 
    system("pause"); 

} 
+0

在第一行,你不提领。 – 2013-04-04 22:53:06

+0

myArray是一个'char **',但是你把它转换成'short *'。 2问题:1.(主要的),你已经改变了间接的级别。 2.你从'char'投射到'short',如果你真的知道自己在做什么(更有可能投射到'int16_t') – Dave 2013-04-04 22:55:29

+0

谢谢Daniel和Dave。关于你的第一个评论戴夫,你知道一个更好的方式来转换一些字符双或其他? – user2012481 2013-04-04 22:58:16

回答

2
cout << (short*)(myArray+5) <<endl; 

打印指针的位置,同时获得COUT通过使用新的指针和一个打印1234,一个。不是它指出的价值。

cout << *((short*)(myArray+5)) <<endl; 
     ^^     ^^ 

将打印的价值指向(short*)(myArray+5)

+0

非常感谢。 – user2012481 2013-04-04 22:56:33

+0

很高兴我可以帮助:) – 2013-04-04 22:57:32

+2

@stardust_:如果这有助于解决您的问题,请将此标记为答案。 – 2013-04-04 23:07:17