注册 登录
编程论坛 C++教室

一个关于数组赋值的小问题

yxb0001 发布于 2009-09-19 12:52, 354 次点击
#include<iostream.h>

void main()
{
    float a[5];
    int b[5];
    int i;
    for(i=0;i<5;i++)
    {
        cin>>a[i];
    }
    for(i=0;i<=5;i++)
    {
        b[i]=a[i];
    }
    cout<<"a[5]="<<a[0]<<","<<a[1]<<","<<a[2]<<","<<a[3]<<","<<a[4]<<endl;
    cout<<"b[5]="<<b[0]<<","<<b[1]<<","<<b[2]<<","<<b[3]<<","<<b[4]<<"\n";
}

运行结果:(前5行为cin输入数据)
100
2.5
7
-6
89
a[5]=0,2.5,7,-6,89
b[5]=100,2,7,-6,89
Press any key to continue

为什么a[0]与b[0]不等?为什么由前者赋值后者,而后者正确而前者不正确?
3 回复
#2
qlc002009-09-19 13:41
for(i=0;i<=5;i++)在这里面你多加了一个“=”造成溢出。
#3
qlc002009-09-19 13:41
去掉“=”就可以了
#4
shl3052009-09-19 17:57
这种问题调试,看内存最直观了
在VC中调试时你会发现,b的地址在a的前面,也就是b后面紧接着a
所以b[5]相当于与占了a[0]的地方,因此a[0]的值会被改掉
1