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

使用动态分配和指针操作求 9 个 double 数的乘积(编译通过了,但是运行时出错,谁能帮我看看出了什么问题啊)[em08]

江帆 发布于 2014-07-23 10:05, 630 次点击
#include<iostream>
using namespace std;
int main()
{
    double *p = new double[10];
    double sun = 1;
   
    for (int i=0; i <9; ++i)
        cin >> *p;

    for (int i = 0; i <9; ++i)
    {
        sun *=*p;
        ++p;
    }
    cout << sun << endl;
    delete[] p;
    return 0;

}
使用动态分配和指针操作求9个double数的乘积(编译通过了,但是运行时出错,谁能帮我看看出了什么问题啊)
9 回复
#2
rjsp2014-07-23 10:11
++p 后就改变了p本身的值,之后 delete[] p 当然不对啦

程序代码:
#include <iostream>
using namespace std;

int main()
{
    double* p = new double[10];
    for( size_t i=0; i!=9; ++i )
        cin >> p[i];

    double sum = 1.0;
    for( size_t i=0; i!=9; ++i )
        sum *= p[i];
    cout << sum << endl;

    delete[] p;
    return 0;
}

#3
江帆2014-07-23 10:31
哦哦,感谢啊
#4
江帆2014-07-23 10:46
回复 2 楼 rjsp
给分是自动给的还是需要我手动给啊,,我是新手,不懂
#5
wp2319572014-07-23 15:03
以下是引用江帆在2014-7-23 10:46:23的发言:

给分是自动给的还是需要我手动给啊,,我是新手,不懂



当然是手动给  也可以平均分配
#6
zklhp2014-07-23 17:46
顺便分我一点罢 楼主我爱你
#7
江帆2014-07-24 12:14
#8
vesseliu2014-07-25 23:06
灌水有奖
#9
午夜小学徒2014-07-31 18:56
#10
stop12042014-08-05 07:57
p++ 是把 指针p的地址向后移一个类型字节

想用指针方式而不修改指针指向的地址可以 *(p+i) 即可
1