我在网站上找到了这个C示例,并试图让它工作:
void simple(int n, float *a, float *b)
{
int i;
for (i=1; i<n; i++)
{
b[i] = (a[i] + a[i-1]) / 2.0;
}
}
这是我为测试目的而添加的内容:
int main()
{
float *p1, *p2, a, b;
a = 5;
b = 10;
p1 = &a;
p2 = &b;
simple(5, p1, p2);
return 0;
}
可以吗?
但我怎么能看到这个例子产生了什么?我可以在循环中添加printf
吗?如果是这样,需要什么样的参数?
答案 0 :(得分:1)
不,你的例子不行,你在一个只包含1的对象中使用了5个元素。使用像
这样的东西float a[5] = { 2, 3 ,4, 5, 6 };
获取要操作的真实数组。
答案 1 :(得分:0)
试试这个:
void simple(int n, float *a, float *b)
{
int i;
for (i = 1; i < n; i++)
{
b[i] = (a[i] + a[i - 1]) / 2.0;
printf("For i = %d:\n", i);
printf("\ta[i] = %.2f\n", a[i]);
printf("\tb[i] = %.2f\n\n", b[i]);
}
}