Как изменить адрес массива в памяти?
Стоит задача, используя только указатели и malloc, выделить память под массив и перезаписать его туда.
#include <iostream>
#include <cstdlib>
int sizeOfArr = 4, quantityOfNumbers = 1;
float arr[1] = {0};
float *pointerNewArr = arr;
pointerNewArr = (float *) malloc(sizeof(float) * sizeOfArr);
for (i = 0; i < quantityOfNumbers; ++i){
*(pointerNewArr + i) = arr[i];
}
arr = pointerNewArr;
Мой наивный ум думал, что такой код сработает, но как бы не старался, но перезаписать указатель массива на указатель pointerNewArr не получается.
Ответы (1 шт):
Автор решения: eri
→ Ссылка
arr адрес на стеке. Он задается компилятором и не меняется. pointerNewArr указатель, сначала указывает на arr, потом на новую область в куче. Переменную из стека в кучу не перенести.
Используйте указатели если хочется менять адрес.
#include <iostream>
#include <cstdlib>
int sizeOfArr = 4, quantityOfNumbers = 1;
float stackarr[1] = {0};
float *arr = stackarr;
float *pointerNewArr = arr;
pointerNewArr = (float *) malloc(sizeof(float) * sizeOfArr);
for (i = 0; i < quantityOfNumbers; ++i){
*(pointerNewArr + i) = arr[i];
}
arr = pointerNewArr;