Символ без знака* и вопрос о повторной интерпретации

#casting #char #unsigned

Вопрос:

Это вопрос для университетского курса, из которого я понимаю только половину.

 #include <iostream>
using namespace std;

void printArray(double* array, int array_size) {
    cout << "Array: ";
    for (int i = 0; i < array_size; i  )
        cout << array[i] << " ";
    cout << endl;
}

int main() {
    double d[] = {0, 0, 0, 0, 0};
    unsigned char* uchar_ptr = reinterpret_cast<unsigned char*>(d);
    printArray(d, 5);
    
    for (int i = 0; i < 5; i  )
        for (int j = 0; j < sizeof(double); j  )
            uchar_ptr[i * sizeof(double)   j] = 1;
            
    printArray(d, 5);
} ///:~
 

Я понимаю, что эта программа создает массив типа double и печатает его содержимое в первой функции. Не уверен, что делает Main.

Мой вопрос в том.

  1. Что именно такое символ без знака*
  2. Что именно делает ‘reinterpret_cast<символ без знака*>(d)’
  3. почему это «двойной* массив», а не просто «двойной массив»

вопрос, который задает учебник, звучит так: «Как вы думаете, почему для каждого элемента не был установлен элемент 1?

Комментарии:

1. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.

2. Привет, бот. Я действительно не знаю, как я могу сделать это более конкретным, но спасибо за помощь.