Я выполняю некоторые упражнения, чтобы выяснить, как получить доступ к значениям в массиве после их изменения с помощью указателей. Может кто-то указать, почему первый вывод не показывает желаемый результат? Я пытаюсь получить как соиЬ для печати 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");
}
В первой строке, вы не разыменования. –
myArray - это символ 'char **', но вы передали его 'short *'. 2 проблемы: 1. (основной), вы изменили уровень косвенности. 2. Вы отбрасываете из 'char' в' short', что вам нужно делать, только если вы действительно знаете, что делаете (более вероятно, что вы хотите наложить на 'int16_t') – Dave
Спасибо Даниэлю и Дейву. Что касается вашего первого комментария dave, знаете ли вы, как лучше преобразовать некоторые символы в двойные или что-то еще? – user2012481