一维数组动态求和,结果不对


#include
#include
int b[1000];
int* runningSum(int* nums, int numsSize, int* returnSize) {
    int i = 1;
    *returnSize = numsSize;
    nums[0] = nums[0];
    for (; i < numsSize; i++) {
        nums[i] += nums[i - 1];
    }free(returnSize);
    return nums;
}
int main() {
    int a;
    int* c;
    char f;
    a = 0;
    scanf_s("nums=");
    f = getchar();
    while (f!= ']') {
        scanf_s("%d", &b[a]);
        a++;
        f= getchar();
    }
    c = runningSum(b, a, (int*)malloc(sizeof(int) * a));
    printf("[");
        for (b[0] = 0; b[0] < a; b[0]++) {
            printf("%d", *(c+b[0]));
            if (b[0] != a - 1) {
                printf(",");
            }
            else {
                printf("]");
            }
        }
    return 0;
}

为什么输入为nums=[1,1,1,1,1]结果输出来为[0,2,3,4,5]?

你这runningSum整个就怪怪的,外面malloc一个数组进去,然后里面free了,那为什么不在里面直接malloc呢,
returnSize这个数组只用到了第一个数,后面的都没用上,为什么不直接定义个int来计算,非要这么搞呢
索引从0开始,i为什么初始是1呢
你为什么要直接修改传入的nums数组呢,你这把原始数据给改了
但凡你能给这个函数加个注释,自己就能看出来哪些是不对劲的地方
写代码之前要先会读代码,不要读不懂自己写的代码