*ptr=a1[i];
ptr*=5;
Первая строка: вы разыменовываете указатель, который нигде не указывает (он не инициализирован). Это неправильно и вызывает неопределенное поведение. Вы пытаетесь присвоить int
, когда нет int
.
Вторая строка: Вы не разыменовываете указатель. Вы умножаете значение указателя на 5
, когда вы действительно хотите умножить int
, на который он указывает, на 5
(помните: int
на который он указывает).
Вы делаете указатель здесь не нужен:
for (int i=0;i < s1;i++) {
int value = a1[i];
value *= 5;
cout<<"The Elements"<<" "<< i <<" "<<" after multiplying 5 is =="<<value;
}
Также условие было неправильным. Это должно быть i < s1
.
И последнее, но не менее важное: не используйте C -массивы в C ++. Они сложны в использовании и подвержены ошибкам. Предпочитайте std::array
для массивов фиксированного размера и std::vector
для динамического размера c. На самом деле int arr[size];
не является стандартом C ++, см. Почему массивы переменной длины не являются частью стандарта C ++?