C填充数组参数

时间:2014-03-03 17:55:21

标签: c arrays pointers parameters struct

我正在处理的一项任务要求我们编写一个读取函数,该函数从stdin中读取一个Points数组。我遇到的问题是方法的语法。 (标题已提供且无法更改。)

int readPoints(struct Points points[]);

这个方法应该全部包含,返回读取的点数并用它们的值填充参数数组。唯一的问题是数组不是指向数组的指针,所以不会在本地范围内填充该数组吗?我也不知道为该函数分配了多少空间,因为在该方法中确定了点数。

1 个答案:

答案 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);
}