Есть следующая ф-я.
int main()
{
bool arr[6];
for (int i = 0; i < 6; i++)
{
cout << &arr[i] << " ";
}
cout << endl;
char arr2[6];
for (int i = 0; i < 6; i++)
{
cout << &arr2[i] << " ";
}
cout << endl;
return 0;
}
Почему при массиве из char выводятся непонятные символы, а не 16-ричные числа?
Оператор cout << c; где с имеет тип char*, считает, что с - нуль-терминированная сишная строка. Чтобы вывести адрес типа char*, нужно привести данный тип к void*, например: cout << (void*)c;
к вышесказанному прибавлю - вот так можно получить адреса ячеек массива из типа char:
#include <iostream>
using namespace std;
int main(){
bool arr[6];
for (int i = 0; i < 6; i++)
{
cout << &arr[i] << " ";
}
cout << endl;
char arr2[6];
for (int i = 0; i < 6; i++)
{
cout << &arr2 + i << " "; // получаем адреса с помощью адресной арифметики
}
cout << endl;
return 0;
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей