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

求解释程序执行错误

周歪强 发布于 2014-05-10 17:23, 388 次点击
程序代码:
//编写一个使用指针作为形参的函数,实现对内存空间中连续n个元素的求和运算功能
#include <iostream>
using namespace std;
void sum(int *p,int n)
{
    int s=0;
    for(int i=0;i<n;i++)
        s+=*p++;
}
void main()
{
    int a[4]={2,3,4,5};
    int *p=a;
    int n=sizeof(a)/sizeof(*a);
    cout<<sum(*p,n)<<endl;
    system ("pause");
}
1>------ 已启动生成: 项目: file1, 配置: Debug Win32 ------
1>生成启动时间为 2014/5/10 17:18:38
1>InitializeBuildStatus:
1>  正在对“Debug\file1.unsuccessfulbuild”执行 Touch 任务。
1>GenerateTargetFrameworkMonikerAttribute:
1>正在跳过目标“GenerateTargetFrameworkMonikerAttribute”,因为所有输出文件相对于输入文件而言都是最新的。
1>ClCompile:
1>  指针连续求和.cpp
1>指针连续求和.cpp(15): error C2664: “sum”: 不能将参数 1 从“int”转换为“int *”
1>          从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>
1>生成失败。
1>
1>已用时间 00:00:00.56
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
才学C++,出现这个错误不知道怎么解决啊,我想知道这个错在哪里了,哪位帮我解释一下那个无法转换到底什么意思哦,谢谢
2 回复
#2
funyh2502014-05-10 21:24
*p  不是指针  改成 cout<<sum(p,n)<<endl;

另外你要得到一个int的s,应该这样定义sum函数
int sum(int *p,int n)
{
    int s=0;
    for(int i=0;i<n;i++)
        s+=*p+i;
        return s;
}
#3
周歪强2014-05-10 22:09
回复 2 楼 funyh250
ok,可以执行了,可是那个指针定义的时候不是*+指针名吗,为什么函数参数的时候就不能加那个*??求解释一下,谢谢
1