C语言中for循环里面控制变量i的作用域问题

刚刚接触C语言或者还不怎么熟练的同志们可能会遇到一些关于变量作用域的问题。
今天我们一起来研究研究C语言中for循环里面的i的作用域问题:

for(int i=0;i<5;i++)
	{
		for(int i=0;i<3;i++)
			printf("5\t");
		printf("\n");
	}

初次看到这种写法的时候肯定会有很大的困惑,比如说第一次大循环时i是0,但等它结束,由于内层循环结束时i值为2,那是不是第二次大循环时i++就等于3了呢,然后内层循环就无法进入,这样想合情合理,因为前面说到变量值一旦被修改后就会覆盖原来的值,但在for循环里面的i就不一样了(仅限与在for内部定义,在外部定义就不满足)。
下面看看运行结果:

5 5 5 
5 5 5 
5 5 5 
5 5 5 
5 5 5 

再来看一个例子:

	int ar[5]={1,2,3,4,5};
	for(int i=0;i<4;i++)
	{
		printf("\n");
	}
	printf("%d",ar[i]);

目的是输出输出数组得第个元素值,然而会发现报错:
在这里插入图片描述
因为i是在for循环内部申明的,它的作用域仅限于循环内部。
稍作修改:

	int ar[5]={1,2,3,4,5};
	int i;
	for(i=0;i<4;i++)
	{
		printf("\n");
	}
	printf("%d",ar[i]);

输出:

5

你可能感兴趣的:(笔记)