Это
void arrayprint(int inarray[])
Эквивалентно этому:
void arrayprint(int *inarray)
Итак, вы получаете размер int-указателя на вашем компьютере. Даже если ваш вопрос касается C ++ и ваша функция выглядит немного иначе, он сводится к этой записи C FAQ .
Итак, внутри main
n_array
на самом деле настоящий честный массив. Но когда передается функции, она «разлагается» на указатель. И нет никакого способа узнать реальный размер. Все, что вы можете сделать, это передать дополнительные аргументы вашей функции.
void arrayprint(int inarray[], int len)
{
for (int n_i = 0 ; n_i < len; n_i++)
/* .... */
И назовите это так:
arrayprint(n_array, sizeof(n_array) / sizeof(n_array[0]));
Конечно, решение real будет использовать vector
s, так как вы используете C ++. Но я не знаю много о C ++.