C 我能';在其他函数中不使用数组?

C 我能';在其他函数中不使用数组?,c,arrays,function,C,Arrays,Function,我正在编写一个程序,在数组中打印一个数字,然后使用函数将数组拆分为奇数和偶数。我已经完成了这一部分,然后我必须将每个奇数和偶数数组发送给另一个函数,该函数计算每个数组中的最大数并返回计算值。似乎主功能中缺少了一些东西 #include <stdio.h> void split(); int largest(int arr[]); int main() { int a[11] = {2, 4, 5, 6, 7, 1, 8, 3, 9, 14, 17}; printf("th

我正在编写一个程序,在数组中打印一个数字,然后使用函数将数组拆分为奇数和偶数。我已经完成了这一部分,然后我必须将每个奇数和偶数数组发送给另一个函数,该函数计算每个数组中的最大数并返回计算值。似乎主功能中缺少了一些东西

#include <stdio.h>

void split();
int largest(int arr[]);

int main() {
  int a[11] = {2, 4, 5, 6, 7, 1, 8, 3, 9, 14, 17};
  printf("the values of the array is :\n");
  for (int i = 0; i < 11; i++) {
    printf("%d ", a[i]);
  }
  split();
  int z = largest(odd);
  printf("the max value in odd array is :%d\n", z);
}

void split() {
  int i, evenNumber = 0, oddNumber = 0;
  int even[11], odd[11];
  int a[11] = {2, 4, 5, 6, 7, 1, 8, 3, 9, 14, 17};
  for (i = 0; i < 11; i++) {
    if (a[i] % 2 == 0) {
      even[evenNumber++] = a[i];
    } else {
      odd[oddNumber++] = a[i];
    }
  }
  printf("\nEven :\n");
  for (i = 0; i < evenNumber; i++) {
    printf("%d ", even[i]);
  }
  printf("\nOdd :\n");
  for (i = 0; i < oddNumber; i++) {
    printf("%d ", odd[i]);
  }
}

int largest(int odd[]) {
  int max;
  max = odd[0];
  for (int i = 0; i < 11; i++) {
    if (max < odd[i]) {
      max = odd[i];
    }
  }
  return max;
}
#包括
无效分割();
整数最大(整数arr[]);
int main(){
inta[11]={2,4,5,6,7,1,8,3,9,14,17};
printf(“数组的值为:\n”);
对于(int i=0;i<11;i++){
printf(“%d”,a[i]);
}
split();
int z=最大值(奇数);
printf(“奇数数组中的最大值为:%d\n”,z);
}
无效拆分(){
整数i,偶数=0,奇数=0;
int偶数[11],奇数[11];
inta[11]={2,4,5,6,7,1,8,3,9,14,17};
对于(i=0;i<11;i++){
如果(a[i]%2==0){
偶数[偶数++]=a[i];
}否则{
奇数[oddNumber++]=a[i];
}
}
printf(“\n文本:\n”);
对于(i=0;i
实际上,您可以在其他函数中使用数组。但是,您遇到的问题是范围


问题 在
main
函数中

int main ()
{
    int a[11] = {2,4,5,6,7,1,8,3,9,14,17};

    printf("the values of the array is :\n");
    for (int i = 0 ; i<11 ; i++){
         printf("%d ",a[i]);
    } 
    split();

    int z = largest(odd);
    printf("the max value in odd array is :%d\n",z);
}
还有一条评论: 无论何时将数组传递给函数,都应始终传递数组的长度。例如:

int largest(int odd[], int len) {
    int max = odd[0];

    for (int i = 0; i < len; i++) {
        if (max < odd[i]) {
            max = odd[i];
        }
    }

    return max;
}
实际上,您可以在其他函数中使用数组。但是,您遇到的问题是范围


问题 在
main
函数中

int main ()
{
    int a[11] = {2,4,5,6,7,1,8,3,9,14,17};

    printf("the values of the array is :\n");
    for (int i = 0 ; i<11 ; i++){
         printf("%d ",a[i]);
    } 
    split();

    int z = largest(odd);
    printf("the max value in odd array is :%d\n",z);
}
还有一条评论: 无论何时将数组传递给函数,都应始终传递数组的长度。例如:

int largest(int odd[], int len) {
    int max = odd[0];

    for (int i = 0; i < len; i++) {
        if (max < odd[i]) {
            max = odd[i];
        }
    }

    return max;
}

到目前为止你已经了解指针了吗?这甚至不是指针的问题,在
main
@DZDomi no中没有
odd
yet@Iluvatar我们还没拿到指针呢!我一直认为指针应该在数组之前教。似乎没有人同意我的观点。到目前为止你已经了解指针了吗?这甚至不是指针的问题,在
main
@DZDomi中没有
odd
yet@Iluvatar我们还没拿到指针呢!我一直认为指针应该在数组之前教。似乎没有人同意我的观点。好吧,但我必须将“split()”放在单独的函数中,但我如何才能将其内容移动到“main”?@asim如果您希望保持
split()
,那么
偶数和
奇数应该在
main()
中声明,而不是
split()
,和
split()
可以更改为
无效拆分(常量int a[],int偶数[],int奇数[],int大小)
size
可以使用古老的C习惯用法
sizeof(arr)/sizeof(arr[0])
来确定,它通过将数组在内存中的大小除以每个元素在内存中的大小来确定数组中的元素数;这比硬编码好
11
。您可以将其称为
split(a,偶数,奇数,sizeof(a)/sizeof(a[0])。如果您这样做,请不要在
split()
中定义名为
a
偶数
奇数
的数组。好的,但我必须将“split()”放在单独的函数中,但如何将其内容移动到“main”?@asim如果您希望保留
split()
,则应在
main()中声明
偶数
奇数
而不是
split()
split()
可以更改为
void split(常量int a[],int偶数[],int奇数[],int size)
size
可以使用古老的C习惯用法
sizeof(arr)/sizeof(arr[0])
来确定,它通过将数组在内存中的大小除以每个元素在内存中的大小来确定数组中的元素数;这比硬编码好
11
。您可以将其称为
split(a,偶数,奇数,sizeof(a)/sizeof(a[0])。如果执行此操作,请不要在
split()
中定义名为
a
偶数
奇数
的数组。