1
int b[] = { 0 };
cout << sizeof(b) << endl;
int i = 9;
for (i = 0; i <= 5; i++)
{
b[i] = i;
cout << b[i] << endl;
}
cout << sizeof(b) << endl;
cout << i << endl;
------------------------------------------------
int b[] = { 0 };
cout << sizeof(b) << endl;
int i = 9;
for (int i = 0; i <= 5; i++)
{
b[i] = i;
cout << b[i] << endl;
}
cout << sizeof(b) << endl;
cout << i << endl;
1) 开始数组b int b[] = { 0 };已经确定变为一个int元素的数组,所以sizeof(b)为1*4为4个字节;虽然后面for循环将b数组元素扩充为6个,但是这种程序最好不要出现,因为一开始给数组分配内存为1个元素4个字节,后面for循环实际上超出了b数组的内存范围,导致溢出。后面的sizeof(b)依然为1*4为4个字节。
2)《变量的作用域是看变量定义在什么地方,而不是看用在什么地方》
第一段程序for循环里面的i在循环外面已经定义,所以循环用的i跟外面i是一个变量,最终 cout << i << endl;输出i为6,因为for循环改变了i的数值;
但是第二段程序 for (int i = 0; i <= 5; i++) 将i在内部定义,那么这个i跟外部的i不是一个变量,for循环内部i作用域只限于for循环内部,不影响外部i为9的数值,i输出还是i=9,不因为循环而改变!!