В этом коде я могу понять, что в закомментированном коде, который обрабатывает '* 2', возникает ошибка, потому что 'a' является адресом массива. Так что это может быть изменено. Но я не могу понять, почему строки 32 и 33 делают ошибку. Я думаю, что когда я сделал другую переменную-указатель с именем «b», я могу изменить переменную «b». Но это сделало меня ошибкой. Скажите пожалуйста, почему происходит ошибка ....
#include <iostream>
using namespace std;
/*
* This is an example about pointer arithemtic
*/
int main()
{
int a[5];
for (int i = 0; i < 5; i++) {
a[i] = i;
}
// pointer arithemtic for +
for (int i = 0; i < 5; i++) {
cout << a + i << "\n";
}
// pointer arithemtic for -
int *c = a;
for (int i = 1; i < 5; i++) {
cout << a + i - c << "\n";
}
/* Try to compile the folloing region */
// cout << a * 2 << "\n";
// cout << a / 2 << "\n";
//
int *b = a;
cout << b * 2 << "\n";
cout << b / 2 << "\n";
}