0

我正在尝试跨文件访问数组,如下所示;

int option[NUMBER_OF_OPTIONS];
...
addition(&option[0], num1, num2); 
...
printf("%d", option[0]);

这是第一个(主)文件

第二个是这样的;

void addition(int * option, unsigned number1, unsigned number2)
{
int total = number1 + number2;
...
*option ++;
}

类似的东西。不用担心添加方法。

问题是 printf 方法总是打印 0,就好像 *option ++; 永远不会执行/读取。

我该如何解决?

顺便说一句,我在“*option++;”中收到警告 文件说:警告:未使用计算的值。

我该如何解决这个问题?

谢谢!

4

3 回答 3

5

这个:

*option++;

不做你认为它做的事。它的实际意思是:

*(option++);

它首先将增量运算符应用于option指针,然后取消引用它。效果是:

option++;
*option; // This is a statement with no effect, hence the warning.

你需要这个:

(*option)++;
于 2013-07-31T12:47:22.773 回答
2

++具有比 更高的优先级**option ++;与 相同,它什么*(option ++);都不做(这就是你收到警告的原因)。

尝试这个:

(*option) ++;

于 2013-07-31T12:48:16.793 回答
1

*绑定比++, 所以*option ++ = *(option++); 要修改数组中的值,您需要编写(*option)++;也就是说,后缀增量的优先级高于取消引用运算符

于 2013-07-31T12:49:18.383 回答