我正在尝试跨文件访问数组,比如这样;
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 ++;”中收到警告文件说:警告:未使用计算值。
如何解决这个问题?
谢谢!
答案 0 :(得分:5)
此:
*option++;
不符合您的想法。它实际意味着:
*(option++);
首先将增量运算符应用于option
指针,然后取消引用它。效果是:
option++;
*option; // This is a statement with no effect, hence the warning.
你需要这个:
(*option)++;
答案 1 :(得分:2)
++
的优先级高于*
。因此*option ++;
与*(option ++);
相同,后者不执行任何操作(这就是您收到警告的原因)。
试试这个:
(*option) ++;
答案 2 :(得分:1)
*
比++
更宽松,所以*option ++ = *(option++)
;要修改数组中的值,需要编写(*option)++
;也就是说,后缀增量的优先级高于取消引用运算符