我正在处理的一项任务要求我们编写一个读取函数,该函数从stdin中读取一个Points数组。我遇到的问题是方法的语法。 (标题已提供且无法更改。)
int readPoints(struct Points points[]);
这个方法应该全部包含,返回读取的点数并用它们的值填充参数数组。唯一的问题是数组不是指向数组的指针,所以不会在本地范围内填充该数组吗?我也不知道为该函数分配了多少空间,因为在该方法中确定了点数。
答案 0 :(得分:1)
points
不是作为参数传递的原始数组的副本。它是传递数组的指针。只需填充它,一切都会好起来的
这种类型的问题是你不知道作为参数传递的数组的实际大小。数组大小应该作为参数传递。无法知道分配给数组的大小。
以下代码验证它:
void func(int a[])
{
printf("%d",sizeof(a)); //prints 4, so a is a type of pointer
}
int main()
{
int a[5];
printf("%d",sizeof(a)); //prints 20
func(a);
}