2013-04-04 16 views
0

Я выполняю некоторые упражнения, чтобы выяснить, как получить доступ к значениям в массиве после их изменения с помощью указателей. Может кто-то указать, почему первый вывод не показывает желаемый результат? Я пытаюсь получить как соиЬ для печати 1234, один с помощью нового указателя и один, используя позицию в массивеУказатели и преобразование массива символов в 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

В первой строке, вы не разыменования. –

+0

myArray - это символ 'char **', но вы передали его 'short *'. 2 проблемы: 1. (основной), вы изменили уровень косвенности. 2. Вы отбрасываете из 'char' в' short', что вам нужно делать, только если вы действительно знаете, что делаете (более вероятно, что вы хотите наложить на 'int16_t') – Dave

+0

Спасибо Даниэлю и Дейву. Что касается вашего первого комментария dave, знаете ли вы, как лучше преобразовать некоторые символы в двойные или что-то еще? – user2012481

ответ

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

Печать указателя. Не значение, указанное им.

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

Напечатает значение указывает (short*)(myArray+5)

+0

Большое спасибо. – user2012481

+0

Рад, что я мог бы помочь :) – 2013-04-04 22:57:32

+2

@stardust_: Если это помогло решить вашу проблему, отметьте это как ответ. –

Смежные вопросы