Sizeof оператор возвращает неправильное значение
Why is my sizeof operator returning the value 8 when it should be returning the value 40. My array is of type double therefore, to my understanding, each element of the array should be 8bytes. And, with 5 elements in my array, the sizeof operator should be returning 40bytes in total. However, when I check the value returned from the entire array, I only get 8 bytes which is the value of only a single element. I forced the array length in my code below to 5 to ensure that my array did infact have all five elements, and it did. I am baffled. Why are there five elements in my array but, only 8 bytes being returned by my sizeof operator. My code is below:
#include<iostream> using std::cout; using std::cin; using std::endl; int main() { int exit = 1; int count = 1; int arrayValueLength = 5; double *arrayValue; arrayValue = new double[5]; while(exit != 0) { cout << "Enter any number: "; cin >> arrayValue[count-1]; cout << endl; cout << arrayValue[count-1] << endl; if(count == 5 ) { exit = 0; } ++count; } cout << "You entered the following values: " << endl; int value1 = sizeof(arrayValue); //only returning 8bytes int value2 = sizeof(arrayValue[0]); //returning 8bytes for single element int value3 = sizeof(double); //checked size of doulbe and it is 8bytes cout << "value1 equals: " << value1 << endl; cout << "value2 equals: " << value2 << endl; cout << "value3 equals: " << value3 << endl; cout << "arrayValueLength equals: " << arrayValueLength << endl; for(int i = 0; i < arrayValueLength; i++) { cout << arrayValue[i] << " "; } cout << endl; return 0; }
Что я уже пробовал:
Я не знаю, что еще можно попробовать. Каждый ресурс, который я проверил, говорит, что мое значение sizeof должно возвращать правильное значение.
Truck53
Нужно ли вручную кодировать размер массива при использовании динамического массива? Я предполагаю, что также невозможно использовать цикл на основе диапазона для динамического массива. Я пытался, но получил ошибку компилятора.
С. П.
Спасибо за все ответы.