基本的C指针问题

Mar*_*kus 4 c pointers

自从我上次编程C以来已经有一段时间了,似乎我在此期间已经忘记了所有内容......我有一个非常简单的指针问题.假设我有一个通过循环迭代计算求和的函数.此函数不仅应该返回循环计数器,还要返回它计算的总和.因为我可以只返回一个值,所以我假设我能做的最好就是声明一个指针.我能这样做吗:

   int loop_function(int* sum)
   {
    int len = 10; 

    for(j = 0; j < len; j++) 
    {
      sum += j;
    }

   return(j);
   }   

   ....


   int sum = 0;
   loop_function(&sum);
   printf("Sum is: %d", sum);
Run Code Online (Sandbox Code Playgroud)

或者我是否需要定义一个额外的变量,指向我传递给函数的总和?

非常感谢,马库斯

Tyl*_*nry 17

你有什么是正确的,除了这一行:

sum += j;
Run Code Online (Sandbox Code Playgroud)

既然sum是一个指针,这增加包含在指针的地址通过j,这是不是你想要的.要递增由指针指向值j,这是通过将引用操作完成的*第一个指针,就像这样:

*sum += j;
Run Code Online (Sandbox Code Playgroud)

此外,你需要j在那里定义某个地方,但我想你知道这一点,这只是一个疏忽.


Vla*_*mir 9

*sum += j;
Run Code Online (Sandbox Code Playgroud)

你正在做的是递增指针(可能不是你想要的)