Что вы должны понять, так это то, что массивы являются указателями. Определение типа int array[5]
выделит место для 5 целых чисел в стеке, а array
будет адресом первого значения. Таким образом, для доступа к первому значению в массиве вы можете написать
array[0]
или *array
(что совпадает с *(array + 0)
)
Таким же образом, чтобы получить адрес третьего элемента, вы можете написать
&array[2]
или array + 2
Поскольку массивы являются указателями, вам не нужно беспокоиться о размере времени выполнения вашего массива, если вы хотите передать его функции, просто передайте его как указатель:
void func(int *array)
{
int size;
//compute size of the array
for (int i = 0; i < size; ++i)
{
//do whatever you want with array[i]
}
}