#include <stdio.h>
void print(int (*p)[3]);
int main(void)
{
int a[3] = {1, 2, 3};
print(&a);
return 0;
}
void print(int (*p)[3])
{
for (int i = 0; i < sizeof(*p) / sizeof(**p); i++)
printf("%d\n", (*p)[i]);
}
Я написал функцию C.См. Выше.
Он может печатать все элементы в массиве.
Есть одна вещь, которая не так совершенна: количество элементов массива, кажется, известно заранее.
Итак, я сделал некоторые изменения в надежде сделать функцию универсальной:
#include <stdio.h>
void print(int (*p)[]);
int main(void)
{
int a[3] = {1, 2, 3};
print(&a);
return 0;
}
void print(int (*p)[])
{
for (int i = 0; i < sizeof(*p) / sizeof(**p); i++)
printf("%d\n", (*p)[i]);
}
В функции p - указатель, указывающий на весь массив.
Однако онне может быть скомпилировано.
Почему нельзя использовать int (* p) [] в качестве аргумента для функции C?