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

img

img

img


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

因为在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