2016-03-03 38 views
1

所以我有一個程序需要增加第一個數組中的值,無論第二個數組設置什麼位置。另一個大小內的數組

即:用戶將數字5輸入到數組中。然後程序轉到第二個數組中的那個位置(5),並將其值增加1。到目前爲止,代碼工作正常,但我必須使用指針表示法而不是下標,並且正在使用正確的語法。下面的代碼:

void enter_into_frequency(int *frequency_temp, int *user_numbers_temp) 
{ 
    int i; 
    for(i=0; i<NO_OF_NUMS; i++) 
    { 
      //Frequency array, with position as whatever number the user entered 
      frequency_temp[user_numbers_temp[i]]++; //Need this in pointer notation 
    } 
} 
+1

知道'a [i]'等同於指針表示法中的'*(a + i)'總是很好。 (對於2D,'a [i] [j]'相當於'*(*(a + i)+ j)'。希望有幫助。 –

+0

這樣做!謝謝大衛 –

回答

3

你在指針符號需要將下面的代碼:

(*(frequency_temp + *(user_numbers_temp + i)))++; 

可以間接引用使用* - 運算符的指針,如果你加一個偏移量指針你能夠解引用你的數組。

你也可以對此What does 「dereferencing」 a pointer mean?

2
(*(frequency_temp + (*(user_numbers_temp + i))))++; 

這可以代替你有什麼權利現在可以用看看。

/* user_numbers_temp[i] -> *(user_numbers_temp+i) */ 
/* frequency_temp[user_numbers_temp[i]] -> *(frequency_temp+(*(user_numbers_temp+i))) */ 

然後應用++運算符。

相關問題