Я пытаюсь узнать о стеке и куче на C++ и только начал печатать тесты, чтобы узнать, как это работает.Получение странных значений для указателя и регулярного int
Я написал этот код:
`#include <iostream>
using namespace std;
int main(){
int a;
int b;
int *c;
int *c2;
int *d{new int};
cout << &a << " a= " << a << endl;
cout << &b << " b= " << b << endl;
cout << &c << " c= " << c << endl;
cout << &c2 << " c2= " << c2 << endl;
cout << &d << " d= " << d << endl;
delete d;
return 0;
}
выход является:
0x7ffefad88d00 а = 124
0x7ffefad88d04 Ь = 0
0x7ffefad88d08 с = 0
0x7ffefad88d10 c2 = 0x 400b20
0x7ffefad88d18 d = 0xec9c20
Есть 3 вещи, которые я не понимаю:
- почему значение 124?
- Почему значение c равно 0, а не указатель типа c2, который имеет одинаковый синтаксис?
- Почему c размер всего 2 байта, а не 4?
Поскольку вы не инициализировали 'a' и triy для печати своего значения, это неопределенное поведение - так что все может случиться. Размер 'int' зависит от компилятора. – doctorlove
спасибо, но я тоже не инициализировал b ... почему он не получил значение complier? – adi319
0 - вполне приемлемое случайное число – doctorlove