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 ;
}
我无法计算上述代码的输出。在http://www.compileonline.com/compile_c_online.php上编译程序时显示的问题在于change()函数的定义。 发现错误:错误:更改前的预期表达式(int * b,int n)。我没有得到这是什么意思。它需要什么表达方式。如果b是指针(它的地址是a),那么我们如何通过添加i来更改其地址值。
答案 0 :(得分:3)
您无法在C中嵌套函数。将change
函数的定义移到main
函数之外。
现代C还要求您在函数声明中指定返回类型,例如: g。,int main(void)
,void change (int *b, int n)
。
编辑:问题已修改,现在change
功能已不再嵌套。现在OP在change
函数之前需要main
的函数声明。
答案 1 :(得分:1)
理想情况下,您不应在main()
中定义您的功能。但是,如果这样做,首先定义它然后使用它。
此外,change
函数的返回类型应为void
,因为此函数未返回任何内容,如果您未指定返回类型,则默认值为int
。
将change ( int *b, int n )
更改为void change ( int *b, int n )
。
答案 2 :(得分:1)
你的代码应该是这样的:这里你只是为数组a
的每个值加5。此处a
是引用类型,因此在外部进行的任何更改都将反映原始值的含义。
#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