-4
int arraySum (int array[], int n)  
{  
int sum = 0, *ptr;  
for (ptr = array; ???; ++ptr)  
sum += ???  
return sum;  
}  

int n配列のサイズです。

4

3 に答える 3

1

これはあなたの宿題/宿題のようですので、2 つのヒントをあげて、あとは自分で終わらせてください:

ヒント 1 : :へ
のポインターがある場合、参照解除演算子を使用してポインターを参照解除することで、それが指すポインターにアクセスできます。intint* ptrint*ptr

ヒント 2 : 3 回
インクリメントptrする1と、同じメモリを指しptr + 3ます。ptr + 3がアドレスのメモリを指していることに注意してください&ptr[3]

于 2013-02-19T10:09:15.863 に答える
0
int arraySum (int array[], int n)  
{  
  int sum = 0, *ptr;  
  for (ptr = array; ptr - array < n; ++ptr)  
    sum += *ptr;  
  return sum;  
}  
于 2013-02-19T10:13:08.547 に答える
0

1 つ目はに、2 つ目???は に置き換えます。ptr < &array[n]*ptr

ポインタはメモリ内のアドレスです。arrayアドレスが含まれています (array[0] が配置されている場所)。

array + iへのポインタも同様ですarray[i]

forループ内でアドレスを比較ptrしているため、最後のオブジェクトに到達するまで配列を移動する必要があるため、配列内の最後の要素のアドレスと比較します。したがって、プログラムは次のようになります。

int arraySum (int array[], int n)  
{  
  int sum = 0, *ptr;  
  for (ptr = array; ptr < &array[n]; ++ptr)  
  sum += *ptr;  
  return sum;  
}  
于 2013-02-19T10:09:55.510 に答える