c - 练习 : Using pointers cross-function in C Language returns error "invalid type argument of unary ‘*’ (have ‘int’ )"

标签 c pointers

<分区>

我是新来的,如果这篇文章编辑不当,我深表歉意。

我目前正在尝试使用 C 解决一些练习,将我最近学习的一些东西付诸实践,但是在使用指针时我不断遇到几个明显的错误,我无法通过我自己。

在这种情况下,我遇到了来自 Hackerrank 的挑战,我应该返回所有数组元素的总和,但我在第 12 行不断收到此编译错误:invalid type argument of unary '*' (有 '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;
}

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

有什么建议吗?

最佳答案

它不应该是*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;
}

关于c - 练习 : Using pointers cross-function in C Language returns error "invalid type argument of unary ‘*’ (have ‘int’ )",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45245246/

相关文章:

c - LVM_GETITEMTEXT 用于 C 中的 x32 和 x64

C++指针转换问题

c - 声明和释放二维动态数组和结构数组

c - 使用 C 设置二进制数中的位数

c++ - 将字符串分配给指针数组

C++ 初始化程序不断地在同一内存位置创建新对象

c - 查看 char ** 指针链的两种方式以及指针类型可以混合吗?

c - 如何仅使用 32 位整数类型计算(a 乘以 b)除以 c,即使 a 乘以 b 不适合这种类型

c - 使用 mingw 编译时缺少 assert.h

c - 文件处理和导出到文本文件