это может быть нубский вопрос, но все же я так растерялся, почему это происходит.Так что этот код работает просто отлично:
int *m,g; g=1; m[0]=1; cout<<m[0];
, и этот сообщает об ошибке:
int *m; m[0]=1; cout<<m[0];
Может ли это быть ошибкой?
Вы используете неинициализированный массив и пытаетесь получить к нему доступ, вызывая неопределенное поведение
в соответствии со стандартом
Если для объекта не указан инициализатор, объектинициализируется по умолчанию.Когда получено хранилище для объекта с автоматической или динамической продолжительностью хранения, объект имеет неопределенное значение, и если для объекта не выполняется инициализация, этот объект сохраняет неопределенное значение до тех пор, пока это значение не будет заменено ... Если неопределенное значениеВ результате оценки поведение не определено.
. Вы должны выполнить инициализацию следующим образом:
int *m=new int[size_you_want_give_to]
например
int *m=new int[5]; // array of 5 elements