一、自己原先解法

#include <stdio.h>

int cal(int* array, int n) {
    int ret = 0;
    for (int i = 0; i < n; i++) {
        ret += array[i];
    }
    return ret;
}

int main() {
    int arr[100];
    int n;
    int num;
    int sum;

    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &num);
        arr[i] = num;
    }

    sum = cal(arr, n);

    printf("%d", sum);

    return 0;
}

二、看别人之后,改进的解法

#include <stdio.h>
#include <stdlib.h>

int cal(int* array, int n) {
    int ret = 0;
    for (int i = 0; i < n; i++, array++) {
        ret += *array;
    }
    return ret;
}

int main() {
    int n;
    int num;
    int sum;

    scanf("%d", &n);
    int* arr = (int*)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++) {
        scanf("%d", &num);
        arr[i] = num;
    }

    sum = cal(arr, n);

    printf("%d", sum);

    return 0;
}

心得:

学会使用malloc函数动态申请内存。