2012-02-16 20 views
-3

私は以前も同様のコードを書いていましたが、何らかの理由でこれは実行されませんでしたが、何が残っているのか間違っているのか分かりません。関数の引数としてのポインタ

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; 
} 
+1

"これは動作しません"はプログラミング言語に関する質問ではありません。強くお試しください。 –

+0

-1。このプログラムは 'n'が宣言されていないためコンパイルされません。少なくともコンパイラを渡すコードを投稿してください。 –

+0

@larsmans:あなたの答えは正しいですが.. –

答えて

1

このプログラムは

*pArg!=NULL 

がヌルポインタ定数でintを比較することであるそのうちの一つ、多くの点で欠陥があります。代わりにpArg != NULLを実行してください。

(およびfnは欠陥があることに注意してください、それはポインタがNULLにラップアラウンドするまで再帰しようとしますが、おそらくがオーバーフロー長くそれが起こる前にスタックします。)

+0

'pArg!= NULL'を試しました。まだ動作しません。今回は何も返しません。 –

+0

@UrecheVlad:最終段落を完全に無視したからです。 –

+0

Ok ...あなたは修正などありますか? –

0
std::cin>>a[i]; 

は、この行は次のようになります。

std::cin>>nArray[i]; 
関連する問題