Я пытаюсь найти размер массива, и sizeof не работает должным образом, предположительно, потому что мой массив является указателем, а не фактическим массивом (опять же, я, вероятно, ошибаюсь). Я новичок в C ++, но не в программировании.
Вот моя функция:
int getSizeOfPointerArray(int a[]){
int n=0;
while(true){
if(!a[n]){
cout << "a[" << n << "] doesn't exist, breaking" << endl;
break;
}
cout << "a[" << n << "] exists with value " << a[n] << " at memory address " << &a[n] << endl;
n++;
}
return n;
}
Функция была вызвана с аргументом p , где p было:
p = new (nothrow) int[f];
'f' было 3. Элементы массива были собраны с:
for(n=0;n<f;n++){
string c = ((n!=f-1)?", ":" ");
cout << p[n] << c;
}
Я ожидал увидеть ячейки памяти трех элементов массива, напечатанных в выходных данных - каждый с четырьмя - и сказать, что [4] не существует. Вместо этого он напечатал шесть адресов памяти. Первые три значения были правильными (все 3 с), но последние три были -33686, -1414812757 и еще -1414812757.
Почему это? Могу ли я просто разделить конечный результат на 2, или не всегда удваивается количество назначенных вами элементов? Это то же самое с нединамическими массивами?