【问题标题】:Pointers & converting a char array to an int指针 & 将 char 数组转换为 int
【发布时间】:2013-04-04 22:51:43
【问题描述】:

我正在做一些练习来弄清楚如何在使用指针更改数组中的值后访问它们。有人能指出为什么第一个输出没有显示所需的输出吗?我试图让两个 cout 都打印 1234,一个使用新指针,一个使用数组中的位置

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

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

}

【问题讨论】:

  • 在第一行,不要取消引用。
  • myArray 是 char**,但您将其转换为 short*。 2个问题:1.(主要的),你改变了间接级别。 2. 你已经从char 转换为short,只有当你真的知道自己在做什么时才应该这样做(更有可能你想转换为int16_t
  • 谢谢丹尼尔和戴夫。关于您的第一条评论,戴夫,您是否知道将某些字符转换为双精度或其他字符的更好方法?

标签: c++ arrays pointers char byte


【解决方案1】:
cout << (short*)(myArray+5) <<endl; 

打印指针。不是它所指向的值。

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

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

【讨论】:

  • @stardust_:如果这有助于解决您的问题,请将其标记为答案。
  • @ViteFalcon 怎么样? :) 他问了这个问题。不是我:)
  • @stardust_:我的意思是 user2012481。对不起:)
猜你喜欢
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 2023-01-08
  • 2013-01-10
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
  • 2018-06-11
相关资源
最近更新 更多