繁体   English   中英

将数组传递给void函数

[英]Passing arrays to a void function

我试图打印出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;
}

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

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

    //your code
 }

对于您的代码, array1[]不会被初始化并且具有随机值,因此if不能按预期工作。

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

另外,您也许可以摆脱使用size变量的麻烦,而只需使用sizeof(array)/ sizeof(array [0])。

tenfold应该将array1作为输入,将array2作为本地,否则您是正确的,在tenfold中添加了一个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

tenfold不打印任何内容。 如果要打印该函数,则无需创建另一个数组。 确保添加#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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM