Вы можете заменить всю последовательность:
char a[] = "4x^0";
int *b;
b = new int[10];
char temp = a[0];
int temp2 = temp - 0;
b[0] = temp2;
с более простым:
char a[] = "4x^0";
int b = new int[10];
b[0] = a[0] - '0';
Нет необходимости возиться с временными переменными. Причина, по которой вам нужно использовать '0'
вместо 0
, заключается в том, что первым является символ '0', который имеет значение 48, а не значение 0.