练习:在C语言中使用指针交叉函数返回错误"一元'的无效类型参数'*'(有'int')"

Luc*_*eto 4 c pointers

我是新来的,很抱歉,如果这篇文章没有正确编辑.

我目前正在尝试使用C解决一些练习,以实践我最近一直在研究的一些东西,但是在使用指针时我一直遇到几个明显的错误,我自己无法弄明白.

在这种情况下,我有来自Hackerrank的这个挑战,我本来应该返回所有数组元素的总和,但我在第12行继续得到这个编译错误: invalid type argument of unary ‘*’ (have ‘int’)

#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>

int simpleArraySum(int ar_size, int* ar) {
    int sum = 0;
    for (int i = 0; i < ar_size; i++){
        sum += *ar[i];                     //line 12
    }
    return sum;
}

int main() {
    int n; 
    scanf("%i", &n);
    int *ar = malloc(sizeof(int) * n);
    for(int ar_i = 0; ar_i < n; ar_i++){
       scanf("%i",&ar[ar_i]);
    }
    int result = simpleArraySum(n, ar);
    printf("%d\n", result);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道它涉及指针的使用,但我不知道如何处理它.我已经尝试使用int *sum = malloc(sizeof(int));*sum += *ar[i];,但同样的错误仍然存在.

有什么建议吗?

sam*_*tha 5

它不应该*ar[i],它应该是ar[i].

int simpleArraySum(int ar_size, int* ar) {
    int sum = 0;
    for (int i = 0; i < ar_size; i++) {
        sum += ar[i];              
    }
    return sum;
}
Run Code Online (Sandbox Code Playgroud)