Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Приведение size_t к int, чтобы объявить размер массива символов

Автор вопроса: Brandon HiltonОтветов: 2

Я пытаюсь объявить размер массива символов, и мне нужно использовать значение переменной, объявленной как size_t, чтобы объявить этот размер. Могу ли я в любом случае привести переменную size_t к int, чтобы я мог это сделать?

  • size_t является типом, который используется для размера массива. Вам не только не нужно приведение, но если вы его сделаете, результат будет просто неявно преобразован обратно в size_t. Pavel Minaev 15.06.2010

c++castingintsize-t

Ответы

Ответ 1 · рейтинг 7 · James McNellis

size_t - это целочисленный тип, и приведение не требуется.

В C++, если вы хотите иметь массив динамического размера, вам нужно использовать динамическое размещение с помощью new. То есть нельзя использовать:

std::size_t sz = 42;
char carray[sz];

Вместо этого вам нужно использовать следующее:

std::size_t sz = 42;
char* carray = new char[sz];
// ... and later, when you are done with the array...
delete[] carray;

или, что предпочтительнее, вы можете использовать std::vector (std::vector управляет памятью за вас, поэтому вам не нужно помнить о ее явном удалении, и вам не нужно беспокоиться о многих проблемах владения, возникающих при ручном динамическом распределении):

std::size_t sz = 42;
std::vector<char> cvector(sz);

Ответ 2 · Chris Morlier

Для получения дополнительной информации о size_t я настоятельно рекомендую статьи Дэна Сакса: "Почему size_t имеет значение" и "Дополнительная информация о size_t"

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы