将数组传递给void函数

时间:2014-04-03 03:53:18

标签: c arrays

我试图打印出array1乘以10的内容,如果里面的整数是正数,如果是负数,那么该数字应保留在另一个数组中。我的代码没有给我任何结果,我在编程方面不是那么好,所以我很确定我犯了一个愚蠢的错误,但我无法弄清楚它是什么有人可以指出问题

void
tenfold (int array2[], int size )
{
    int i, array1[size];
    for (i=0;i<size;i++)
{

    if (array1[i]>0)
        array2[i]= 10 * array1[i];


    else
        array2[i]= array1[i];
}
}

int main()
{
int i,array1[9]= {3, 4, 5, 6, 7, -8, -9, 1, 2};
int size = 9;
tenfold(array1, size);

return 0;
}

4 个答案:

答案 0 :(得分:0)

您已更改函数中的数组名称,将代码更新为

//------------v array1
tenfold (int array1[], int size )
{
    int i, array2[size];  //here array2

    //your code
 }

使用您的代码时,array1[]永远不会被初始化并且具有随机值,因此if将无法按预期工作。

答案 1 :(得分:0)

首先应该尝试以十倍()方式打印值。 :-) 您不需要在tenfold()中创建array1。

此外,您可以远离使用大小变量,只需使用sizeof(array)/ sizeof(array [0])。

答案 2 :(得分:0)

十倍应该将array1作为输入,将array2作为本地,其他方面你的是正确的, 添加了十倍的printf以查看输出。

#include<stdio.h>
void tenfold (int array1[], int size )
{
    int i, array2[size]; 
    for (i=0;i<size;i++)
    {
         if (array1[i]>0)
                array2[i]= 10 * array1[i];
              else
                array2[i]= array1[i];
    }
   for(i=0;i<size;i++)
    printf("(orignal) array1[%d]=%d, (new) array2[%d]=%d\n", i, array1[i], i, array2[i]);
}

int main()
{
int i,array1[9]= {3, 4, 5, 6, 7, -8, -9, 1, 2};
int size = 9;
tenfold(array1, size);

return 0;
}

输出:

(orignal) array1[0]=3, (new) array2[0]=30
(orignal) array1[1]=4, (new) array2[1]=40
(orignal) array1[2]=5, (new) array2[2]=50
(orignal) array1[3]=6, (new) array2[3]=60
(orignal) array1[4]=7, (new) array2[4]=70
(orignal) array1[5]=-8, (new) array2[5]=-8
(orignal) array1[6]=-9, (new) array2[6]=-9
(orignal) array1[7]=1, (new) array2[7]=10
(orignal) array1[8]=2, (new) array2[8]=20

答案 3 :(得分:0)

十倍不打印任何东西。如果要打印该功能,则无需创建另一个数组。一定要添加#include

#include <stdio.h>

void tenfold (int array[], int size)
{
    int i;
    for (i=0;i<size;i++)
    {
        if (array[i]>0)
        printf("%d ", (10 * array[i]));
      else
        printf("%d ", array[i]);

    }
}

输出:     30 40 50 60 70 -8 -9 10 20