所以我有一个程序需要增加第一个数组中的值,无论第二个数组设置的位置如何。
即:用户将数字5输入数组。程序然后转到第二个数组中的那个位置(5)并将其值增加1。到目前为止,代码工作正常,但我必须使用Pointer表示法而不是下标,并且正在努力使用正确的语法。这是代码:
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
}
}
答案 0 :(得分:3)
指针表示法中需要的代码如下:
( *(frequency_temp + *(user_numbers_temp + i)) )++;
您可以使用*
- 运算符取消引用指针,如果向指针添加偏移量,则可以取消引用数组。
答案 1 :(得分: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))) */
然后应用++
运算符。