S
- это int *
, указатель на целое число, которое является адресом памяти, который на вашей машине в два раза больше целого числа.
Если вам нужен размер массива (т. Е. Количество элементов), вы не можете получить его непосредственно в чистом C. Но, поскольку это вопрос c ++, есть способ: использовать vector
, который имеет size()
метод.
На самом деле, это не совсем так: внутри функции , которую вы объявляете S
(и только если она явно инициализируется во время компиляции, как вы делаете в своем примере - даже new int[19]
не делает не работает), оператор sizeof
действительно получает правильный ответ, поэтому c ++ позволяет вам сделать это:
int S[]={1,2,3,2,5,6,25,1,6,21,121,36,1,31,1,31,1,661,6};
vector<int> v(S, S + sizeof(S) / sizeof(int) );
и затем вы можете использовать v.size()
(см. эти документы ).
Версия шаблона от Nawaz в другом месте - еще одно превосходное предложение, которое заставляет компилятор нести полную информацию о построении массива c ++ (опять же, обратите внимание, что все это известно во время , которое Вот почему вы можете указать размер аргумента).