zhanjunlihai 2021-03-07 16:50 采纳率: 25%
浏览 32
已结题

函数的参数调用问题,谢谢

我只能理解输出结果的第一个值 6  后面的没明白什么意思,希望懂得人告诉我一下!谢谢

#include <stdio.h>
void f(int *q)

    int i=0;
    for(;i<5; i++) 
        (*q)++;
}
main( )

    int a[5]={1,2,3,4,5}, i;
    f(a);
    for(i=0;i<5; i++) 
        printf("%d,", a[i]);
}

程序输出结果: 6,2,3,4,5,

  • 写回答

3条回答 默认 最新

  • 幻灰龙 2021-03-07 17:36
    关注

    函数的参数 `f(int *p)` 接受数组指针,等价于 `f(int p[])`。传入 `f(a)` 这里传入的是数组 a 的指针。 数组 a 的指针则遵守数组指针的规则,指向数组的第一个元素。函数内部的循环,都执行了 `(*p)++` 这句代码,拆解开执行了两个步骤:

    • *p 指向了数组的第一个元素
    • (*p)++ 就是让数组的第一个元素自增

    循环了5次,于是数组的第一个元素就自增了5次,从1变成了6. 数组的其他元素都没变化。因此,main 函数里循环打印数组时,就分别打印出了变为 6 的第一个元素,以及什么都没变的其他元素:6 2 3 4 5 

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月24日

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘