zjj98723a 2022-02-16 23:55 采纳率: 63.6%
浏览 33
已结题

关于一个C语言函数问题

#include <stdio.h>
void fun (int c, int *d) {
    c++;
    (*d)++;
}
int main ( ){
    int a=1, b=2;
    fun(a, &b);
    printf("%d, %d", a, b);
    return 0;
}

这个问题结果为什么是1,3

  • 写回答

1条回答 默认 最新

  • 谛凌 2022-02-17 00:07
    关注

    a是值传递,b是地址传递
    所以在fun里面的运算不会影响a的值,a一直是1
    &b把b的地址传给了fun函数,所以fun函数内是针对b地址的进行修改,影响了b的值,所以b本来是2,++以后变成了3

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 创建了问题 2月16日