Можно ли создать функцию с массивом в качестве одного параметра и вторым параметром для хранения размера параметра 1 - массива?
Да и нет.
Да, приведенный ниже код в порядке. Но нет, x
- это , а не массив. Параметры функции не могут быть массивом в C - даже если int x[]
выглядит как единица. В случае параметров функции int x[]
совпадает с int *x
. x
- это указатель - указатель на int
.
void printArray(int x[], int arrayCount);
Это не проблема при использовании. Рассмотрим ниже. Во многих случаях массив преобразуется в адрес первого элемента массива. Здесь fred
преобразуется &fred[0]
в качестве первого аргумента в printArray()
.
int fred[42];
printArray(fred, 42);
Пример реализации printArray()
печатает размер параметра x
. Обратите внимание, что это размер указателя .
void printArray(int x[], int arrayCount) {
printf("Size of x %zu\n", sizeof x);
}