fNum[size]
- это массив из одного целого числа.
int *ptrf = &fNum[size];
Указатель на один элемент после последнего элемента этого массива, поэтому он находится за пределами доступа, это неопределенное поведение .
Поскольку он имеет только один элемент, вы объявляете его массивом бессмысленным.
Указатель на начало массива будет:
int *ptrf = fNum;
Или
int *ptrf = &fNum[0];
Затем вы можете циклически перебирать массив, увеличивая указатель ptrf++
.
Чтобы получить указатель на переменную:
int x;
int *ptr = &x;
Итак, объявления и присваивания переменных:
int size = 1, fNum[size], sNum[size];
char oprtn[size], answer;
float result[size];
int *ptrf = &fNum[size];
int *ptrs = &sNum[size];
char *ptro = &oprtn[size];
float *ptrRes = &result[size];
То же, что и:
int fNum, sNum;
char oprtn, answer;;
float result;
int *ptrf = &fNum;
int *ptrs = &sNum;
char *ptro = &oprtn;
float *ptrRes = &result;
Тем не менее, в C ++ есть несколько более приятных контейнеров данных, которые вы можете использовать, например, std::vector
или std::array
.
Последнее замечание: массивы переменной длины (fNum[size]
) запрещены в C ++.