如果有人能帮我弄清楚为什么这个函数(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] );
}
}
答案 0 :(得分:1)
for (i = 0; i < 5; i++);
表达式末尾的分号在进入循环体之前终止for循环。因此,编译器将主体视为独立的代码块,与for循环无关。
由于循环的主体与for循环分离,变量i
(for循环的计数器)超出了范围,因为i
是for循环的本地,并且只能在它内部调用,因为它是在for循环的条件语句中声明的。
要解决此问题,请在for循环条件结束时删除分号。