【发布时间】:2014-08-16 20:09:25
【问题描述】:
#include <stdio.h>
int i;
float *calculateProduct(int *,int *,int );
int main()
{
int n;
printf("Enter length of array\n");
scanf("%d",&n);
int x[100];
int y[100];
for(i=0;i<n;i++)
{
scanf("%d",&x[i]);
}
for(i=0;i<n;i++)
{
scanf("%d",&y[i]);
}
/*for(i=0;i<n;i++)
{
printf("%d ",x[i]);
}
printf("\n");
for(i=0;i<n;i++)
{
printf("%d ",y[i]);
}
printf("\n");
*/
int *ptr;
ptr=calculateProduct( x, y, n);
for(i=0;i<n;i++)
printf("%d ",*(ptr+i));
return 0;
}
float *calculateProduct(int *x,int *y,int n)
{
int z[100];
for(i=0;i<n;i++)
{
z[i]=x[i]*y[i];
}
return z;
}
在上面的代码中,我想将 2 个数组传递给一个函数及其大小,然后想计算这 2 个数组的乘积,全部使用函数和指针。
在我的测试用例中,我取 3 作为数组的大小并输入元素。产品数组正确显示了第一个两个元素的结果,但没有显示第三个元素的结果。但是,在调试并包含一些 printf 语句时,我得到了正确的答案(我在我的代码中对此进行了评论)。
这怎么可能? 2个printf语句怎么能去掉垃圾值?
【问题讨论】:
标签: c arrays function pointers