读书人

关于多重定义来人啊

发布时间: 2013-08-14 14:27:55 作者: rapoo

关于多重定义,来人啊,救命啊
#include<iostream>
using namespace std;


int main()
{
int i = 2;
int array[11];
for(int i = 0; i <= 10; i++)
array[i] = 100;
for(int i = 0; i <= 10; i++)
cout << array[i] << endl;

}


这个为什么没有造成多重定义……………………难道循环看做是函数??
[解决办法]


int main()
{
int i = 2; //i定义一次
int array[11];
for(int i = 0; i <= 10; i++)  //i定义两次
array[i] = 100;
for(int i = 0; i <= 10; i++) //i定义三次
cout << array[i] << endl;

}



换成


int main()
{
int i;
int array[11];
for(i = 0; i <= 10; i++)  
array[i] = 100;
for(i = 0; i <= 10; i++)
cout << array[i] << endl;



[解决办法]
引用:

int main()
{
int i = 2; //i定义一次
int array[11];
for(int i = 0; i <= 10; i++)  //i定义两次
array[i] = 100;
for(int i = 0; i <= 10; i++) //i定义三次
cout << array[i] << endl;

}



换成


int main()
{
int i;
int array[11];
for(i = 0; i <= 10; i++)  
array[i] = 100;
for(i = 0; i <= 10; i++)
cout << array[i] << endl;


+1
[解决办法]
举个例子
void fun()
{
int i = 1;


for(int i = 0;;){
……
}
}
这里有两个i,第一个i的生命周期是fun函数,第二个i的生命周期是for循环内部,如果你在for循环内使用i,优先只用循环内部的i,如果没有在向外找。
这就是你上面的代码不出来多重定义的原因。
[解决办法]
for循环里面的i的生命周期只是在循环内,
等同 以下语句:
int i =2;
{
int i =0;
.....
}
不过vc6的话lz这样写会报错

[解决办法]
4楼正解关于多重定义,来人啊
[解决办法]

引用:
就是代码从V6到2010出现了类似错误,在v6里循环里的变量是否不是局部变量,而在2010里循环里的变量变成了局部变量,还有就是for和while都一样吧!!
Quote: 引用:

for循环里面的i的生命周期只是在循环内,
等同 以下语句:
int i =2;
{
int i =0;
.....
}
不过vc6的话lz这样写会报错

从vs10移植到vc6?vc6下只能按照1楼这样写,移植到2010下怎么可能有问题。。。除非你是从从vs10移植到vc6。。。。
[解决办法]
变量作用域的问题
[解决办法]
在vs2010编译通过
[解决办法]
正确的代码当然没有重复定义。
重复定义: 相同作用域内出现多个相同定义。

读书人网 >C++

热点推荐