c++中的初始化问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 02:01:49
#include <iostream>
#include <cstdlib>
int main ()
{
//由用户获取数字大小
std::cout <<"entre the array size ";
int size;
std::cin>>size;
//为数组分配内存
int* array=new int[size];
for(int i=0;i<size;i++)
array[i]=rand();
//显示数组内容
for(int j=0;j<size ;j++) //为什么这里 的j用i不行
std::cout<<'\n'<<array[j];
delete [] array;

return 0;

}

上面显示标注的地方用i就不行,如果用另外的 字母就行比如我换成了j,就可以了,想问一下为什么不能用呢?在c语言中是可以的。

很简单 你的编译器一定是VC6。0
它比较落后 在for 头里面定义的变量是外部可见的,并不是块语句内部的
就是说 你后面再用i 等于是重定义了一次

如果你是VC6。0以上的版本就不会出现这种问题,他是局部变量
而6。0在这里的I是全局的

或者你把 第2个循环的int 去掉 也可以的

for(int i=0;i<size;i++)
这一句当中,由于你的int i 声名在了循环中。所以这个i 只对当前循环有效。
这个循环结束后,我们可以理解为i“消失”了。就好像从来没有出现过……
所以下一个循环不可以在使用i。
如果想要使用。可以把i的声名放在for循环之前来做
int i = 0;
for (;i<size;++i)
.
.
.
for (i = 0;i<size;++i)