为指针分配动态内存为什么会导致不能调用函数
而直接调用指针为什么会导致不能得出目标数字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);
}