………………………….. 2022-02-14 17:48 采纳率: 0%
浏览 32

一个关于指针和数组分别在函数中调用的问题

img

img

img


为指针分配动态内存为什么会导致不能调用函数
而直接调用指针为什么会导致不能得出目标数字15

  • 写回答

1条回答 默认 最新

  • 关注

    因为在main函数的for循环中,pa的值一直在变,每次计算的时候,pa都是指向了数组的最后一个元素。所以在传入average函数的时候,实际上计算的是从最后一个元素开始的5个元素。
    代码修改如下:

    #include <stdio.h>
    #include <stdlib.h>
    
    int average(int *p)
    {
        int amount = 0;
        for (int i=0;i<5;i++)
        {
            amount = *p + amount;
            p++;
        }
        return amount;
    }
    
    void main()
    {
        int array[100],*pa = array,m;
        for (;pa<array+5;pa++)
        {
            scanf("%d",pa);
        }
        pa = array; //在这里重置pa
        m=average(pa);
        printf("%d",m);
    }
    
    

    img


    如有帮助,请点击我的回答下方的“采纳该答案”帮忙采纳一下,谢谢。

    img

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 2月14日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据