У меня есть несколько разных вопросов по поводу следующего фрагмента кода, пример, приведенный одним из моих профессоров.
Прежде всего, что такое Thing t {8,15}?Это массив из двух целых чисел, 8 и 15?Или это инициализация значений x и y для t (переменная типа Thing) до 8 и 15 соответственно?Во-вторых, то, что происходит в строке:
std::cout << "n\t = " << place[0] << ", " << place[1];
Мне кажется, что он печатает признаки переменной места, который, на мой взгляд, является указателем на int, указывающим на целочисленные значения вадрес памяти t?
Наконец, что на земле происходит в этой строке:
int y = *( int *)(( char *)& t + 4);
Здесь я потерялся.Пожалуйста, потерпите меня, изучая указатели и память
Код, которым я занимаюсь:
struct Thing {
int x , y ;
int* getPlaces () {
return & x ;
}
};
int main () {
Thing t {8 ,15};
int* place = (int *)& t ;
std :: cout << "\nt = " << place [0] << ", " << place [1];
int y = *( int *)(( char *)& t + 4);
std :: cout << "\nt.y = " << y ;
int* location = t . getPlaces ();
location [0] = 17;
std :: cout << "\nt.x = " << t . x ;
}