C - 函数值未正确传递两个整数值之一

sna*_*121 0 c variables pointers function

所以这是代码 - 我知道一些简单的错误,但我似乎无法弄明白.我已经尝试了不同的数字类型,指针和其他ish ......变量b并且c在函数中具有正确的值separate()- 但是当它们被传递给main()它们时它们会出现b = 0c = -471211(或类似的东西)....

我错过了什么?这是代码:

    #include <stdio.h>
    void separate(int a, int b, int c){
      b = a/12;
      c = a%12;   }


   int main(){
     int a = 100
     int b, c;
     separate(a, b, c);
     printf("%i = 12 * %i + %i \n", a, b, c);
Run Code Online (Sandbox Code Playgroud)

小智 5

在C中,所有函数参数都按值传递.因此,修改参数在函数之外没有任何影响.如果要修改函数的参数,则必须将指针传递给它:

void change_arg(int *arg)
{
    *arg = 42;
}

int arg = 1337;
printf("Before: %d\n", arg);
change_arg(&arg);
printf("Afer: %d\n", arg);
Run Code Online (Sandbox Code Playgroud)