指针作为函数参数

时间:2012-02-16 12:51:44

标签: c++ arrays function arguments

前段时间我写了一个类似的代码,但它有效,但由于某种原因,这不起作用,我无法弄清楚我遗漏或做错了什么。

int fn(int *pArg)
{
    if(*pArg!=NULL)
        return *pArg+fn(pArg+1);
    else
        return 0;
}

int main()
{
    int nArray[128],i,nLenght;
    std::cin>>nLenght;
    for(i=1;i<=nLenght;i++)
        std::cin>>nArray[i];
    std::cout<<"The sum of the array is: "<<fn(nArray);
    system("PAUSE");
    return 0;
}

2 个答案:

答案 0 :(得分:1)

这个程序在很多方面存在缺陷,其中之一就是

*pArg!=NULL

int与空指针常量进行比较。请改为pArg != NULL

(并注意fn有缺陷;它将尝试递归,直到指针回绕到NULL,但可能是由于堆栈溢出很久才发生。)

答案 1 :(得分:0)

std::cin>>a[i];

这一行应该是:

std::cin>>nArray[i];