Обратите внимание, что ваш код вызывает неопределенное поведение, потому что вы обращаетесь к элементу 7 массива, размер которого составляет всего 5 элементов. Используя параметр размера, вы можете, например, проверить, превышает ли индекс размер, и не делать этого вызова вместо этого.
В вашем примере вы получите те же результаты, потому что вы на самом деле не используете параметр:
void say(int ar[],int sizeAn)
{
cout<<ar[1]<<endl;
cout<<ar[7]<<endl;
}
sizeAn
не используется, поэтому не имеет значения. Но рассмотрим, например, следующий код:
void say(int ar[],int sizeAn)
{
for (int i = 0; i < sizeAn; i++){
cout<<ar[i]<<endl;
}
}
Здесь он печатает все элементы в массиве, поэтому ему нужно знать, насколько велик массив. Например, если вы используете std::vector
, вам не нужно передавать размер, так как вы можете просто вызвать функцию size
, но вы не можете сделать это с массивами в стиле C, поэтому вам нужно передать этот размер в качестве параметра, если вы хотите написать функцию, которая ведет себя по-разному в зависимости от размера).
Или вот более практичный пример вашего кода, где параметр size используется, чтобы избежать неопределенного поведения:
void say(int ar[],int sizeAn)
{
cout<<ar[1]<<endl;
if (sizeAn >= 8){
cout<<ar[7]<<endl;
}
}
Теперь он такой же, как ваш код с изменением, что он печатает только элемент 7, если он действительно существует.