2012-04-23 2 views
0

私はC++クラスに次の再帰関数を書いています。ポインタ操作で配列を作成できる他の言語は何ですか?

bool contains(int arr[], int n, int val){ 
    if(n == 0) return false;   // Escape clause 
    if(arr[0] == val) return true; // Second escape clause 
    return contains(arr+1, n-1, val); 
} 

私の教授は、C/C++ /アセンブラと言っ配列トラバーサルのこの種をサポートする唯一の主流言語です。ポインタアドレスを変更することによって、この種の検索を可能にする他の言語はありますか?

+0

パスカルでも可能です。ポインタの算術演算は安全ではなく、一般的にそれに値するものではありません(ポインタを持つ最近の言語から、明示的に禁止された算術演算に移行する)。 –

+0

@ダニ:ええ、コードを少し誤って読んで、申し訳ありません。 –

+0

arr [n]に、このメソッドの最初の呼び出しで関心のある値が含まれているとどうなりますか?ここでn> 0ですか?その場合、あなたは偽に戻りませんか? – dcp

答えて

2

配列の数値インデックスをサポートするすべての言語は、この一般的なアルゴリズムで機能します。それはポインタ操作とは関係ありません。

Cでの文字列ベースのアルゴリズムでは、通常、ポインタ操作を利用します。たとえば、strlenを次のように実装することができます。

size_t strlen(char* pValue) { 
    char* pStart = pValue; 
    while (*pValue != '\0') { 
    pValue++; 
    } 
    return pValue - pStart; 
} 

このコードはchar[]又はchar*入力に等しく良好に機能するであろう。ポインタのこのタイプの操作は、実際にポインタを公開し、そのように配列を公開する言語に限られています。

これはC/C++ /アセンブラに限定されません。例えば、C#

関連する問題