C++ и sizeof() - Вопросы по С+

Вопрос C++ и sizeof()

Регистрация
17 Дек 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
int main()

{

int arr[] {1, 2, 3};

int arrlength = sizeof(arr) /

sizeof(arr[0]);

}



как найти размер массива, если

sizeof(arr) = 8, а

sizeof(arr[0]) = 4,

и их деление даст 2, а не 3?
 
Регистрация
23 Дек 2013
Сообщения
86
Репутация
1
Спасибо
0
Монет
0
#include <iostream>

int main()
{
// Объявляем массив из 3 элементов
int arr[] {1, 2, 3};

// Вычисляем размер массива
size_t arrlength = sizeof(arr) / sizeof(arr[0]);

// Выводим результат
std::cout << "Размер массива: " << arrlength << "\n";

return 0;
}
 
Регистрация
23 Окт 2013
Сообщения
88
Репутация
1
Спасибо
0
Монет
0
С чего вы решили что sizeof(arr) даст 8?
В данном случае sizeof видит что arr это не указатель а именно массив с размером 12
 
Регистрация
2 Апр 2013
Сообщения
84
Репутация
-3
Спасибо
0
Монет
0
Внутри функции main вызов sizeof(arr) вернёт 12 - т.к. в границах этой функции компилятор воспринимает arr именно как int[3].

Но вот при передаче массива в другую функцию происходит передача только указателя на начало массива и вся информация о размере теряется.

Это особенность языка C, которая переехала в C++. Но, в отличие от C, в C++ есть полноценные массивы - в виде стандартных классов array и vector. Использовать же C-style массивы в C++ большей частью не имеет смысла.
 
Регистрация
9 Ноя 2012
Сообщения
102
Репутация
1
Спасибо
0
Монет
0
sizeof(arr) будет 12, а не 8
192534725_bc36f4e236d5b45751a63cdc11386ab5_800.jpg

 
Сверху Снизу