#include<iostream> using namespace std; int main(){ int array1[2][3]={1,2,3,4,5}; int array2[2][3]={{1,2},{4}}; cout<<"array1: "; for(int i=0;i<2;++i) for(int j=0;j<3;++j) cout<<array1[i][j]<<","; cout<<"\narray2: "; for(int i=0;i<2;++i) for(int j=0;j<3;++j) cout<<array2[i][j]<<","; cout<<"\n"; } 说明一下 我将数组2的i改为m等值 运行成功 将数组2的j改为m却运行不成功!!这是什么原因!! #include<iostream> using namespace std; int main(){ int array1[2][3]={1,2,3,4,5}; int array2[2][3]={{1,2},{4}}; cout<<"array1: "; for(int i=0;i<2;++i) for(int j=0;j<3;++j) cout<<array1[i][j]<<","; cout<<"\narray2: "; for(int m=0;m<2;++m) for(int k=0;k<3;++k) cout<<array2[m][k]<<","; cout<<"\n"; } 这个是可以的!!
满意回答
2012-03-10 19:32
主要是定义重复的意思(redefinition) 一般在同一段代码中不要出现变量重复定义,否则就会报出错; 你这里面的出错这是和编译器有关,vc报错而有的不报错 for(int i=0;i<2;++i) for(int j=0;j<3;++j) cout<<array1[i][j]<<","; cout<<"\narray2: "; for(int i=0;i<2;++i) for(int j=0;j<3;++j) cout<<array2[i][j]<<","; 你看看这里面两个for循环中的i都在同一层,然后你生命了两次int所以就出错了。你只要把第二个int去掉就不会有错了 for(int i=0;i<2;++i) for(int j=0;j<3;++j) cout<<array1[i][j]<<","; cout<<"\narray2: "; for(i=0;i<2;++i) for(int j=0;j<3;++j) cout<<array2[i][j]<<","; 所以你后来把i改成m就没错就是因为变量重复定义没有了。 那么你一定又会问j为什么就可以? 这是因为j是在for循环里面,第一个j是第一个for里面的变量,第二个j是第二个for里面的变量,他们并不在同一个区间,所以就不会出错了。如果你把他们放其一就还会出错,例如下面程序就会报错 for(int i=0;i<2;++i){ for(int j=0;j<3;++j) cout<<array1[i][j]<<","; for(int j=0;j<3;++j) //要把第二个int给去掉才不会出错 cout<<array2[i][j]<<","; } 为了防止以上这些错误,你可以在开始的时候一起定义,后面不定义也不会出错了,比如 #include<iostream> using namespace std; int main(){ int array1[2][3]={1,2,3,4,5}; int array2[2][3]={{1,2},{4}}; int i,j; //在for循环上面一起定义了,后面就不用定义 cout<<"array1: "; for(i=0;i<2;++i) for(j=0;j<3;++j) cout<<array1[i][j]<<","; cout<<"\narray2: "; for(i=0;i<2;++i) for( k=0;k<3;++k) cout<<array2[m][k]<<","; cout<<"\n"; }