我猜这个函数有一些错误

时间:2017-03-13 23:42:00

标签: c

如果有人能帮我弄清楚为什么这个函数(fn)不打印int数组元素,我将不胜感激?

#include <stdio.h>
void fn (int arr[], int s);
int main(void)
{
    int arr[] = {5, 2, 0, 9, 7}, s=5;
    fn (arr, s);
}

fn(int arr[], int s)
{
    int i;
    for (i = 0; i < 5; i++);
    {
        arr[i]++;
        printf("%d ", arr[i] );
    }
}

1 个答案:

答案 0 :(得分:1)

for (i = 0; i < 5; i++);

表达式末尾的分号在进入循环体之前终止for循环。因此,编译器将主体视为独立的代码块,与for循环无关。

由于循环的主体与for循环分离,变量i(for循环的计数器)超出了范围,因为i是for循环的本地,并且只能在它内部调用,因为它是在for循环的条件语句中声明的。

要解决此问题,请在for循环条件结束时删除分号。