C 以下代码的输出是什么? main() { inta[]={2,4,6,8,10}; int i; 更改(a,5); 对于(i=0;i

C 以下代码的输出是什么? main() { inta[]={2,4,6,8,10}; int i; 更改(a,5); 对于(i=0;i,c,compiler-errors,output,C,Compiler Errors,Output,您不能在C中嵌套函数。请将change函数的定义移到main函数之外 现代C还要求您在函数声明中指定返回类型,例如,intmain(void),voidchange(int*b,intn) EDIT:问题已被编辑,现在change函数不再嵌套。现在,OP需要在main函数之前为change声明函数。理想情况下,您不应该在main()中定义函数。但是,如果这样做,请先定义它,然后再使用它。 另外,change函数的返回类型应为void,因为此函数不返回任何内容,如果未指定返回类型,则默认为int

您不能在C中嵌套函数。请将
change
函数的定义移到
main
函数之外

现代C还要求您在函数声明中指定返回类型,例如,
intmain(void)
voidchange(int*b,intn)


EDIT:问题已被编辑,现在
change
函数不再嵌套。现在,OP需要在
main
函数之前为
change
声明函数。

理想情况下,您不应该在
main()
中定义函数。但是,如果这样做,请先定义它,然后再使用它。 另外,
change
函数的返回类型应为
void
,因为此函数不返回任何内容,如果未指定返回类型,则默认为
int


Change(int*b,int n)
更改为
void Change(int*b,int n)
您的代码应该是这样的:这里您只需向数组
a
的每个值添加5。这里
a
是引用类型,因此在外部进行的任何更改都将反映原始值的含义

main()
{

    int a[ ] = { 2, 4, 6, 8, 10 } ;
    int i ;
    change (a, 5 ) ;
    for ( i = 0 ; i <= 4 ; i++ )
    {
        printf( "\n%d", a[i] ) ;
    }
}
change ( int *b, int n )
{
    int i ;
    for ( i = 0 ; i < n ; i++ )
        *( b + i ) = *( b + i ) + 5 ;
}

另外,它需要在
main
之前声明。当有答案时,请不要用不同的问题来更改您的问题。这会让人觉得答案与您的问题完全无关。对不起,先生,我以后会记下这一点。您为什么更改原始帖子?现在您已经更改了上下文。
  #include<stdio.h>
  int  change ( int *b, int n )
  { 
            int i ;
            for ( i = 0 ; i < n ; i++ )
            *( b + i ) = *( b + i ) + 5 ;
  }
  int main()
  {   

        int a[ ] = { 2, 4, 6, 8, 10 } ;
        int i ; 
        change (a, 5 ) ; 
        for ( i = 0 ; i <= 4 ; i++ )
        {
            printf( "\n%d", a[i] ) ;
        }

   }
7
9
11
13
15