Olá Thiago, tudo bem?
Pelo que pude perceber, você entendeu perfeitamente o conceito de passar um array para uma função em C, e sua solução está correta. Você criou a função soma
que recebe um array e seu tamanho, e retorna a soma de todos os elementos do array.
Apenas para reforçar o conceito de que arrays são por natureza ponteiros em C, vou te dar um exemplo. Quando você declara um array, o nome do array é, na verdade, um ponteiro para o primeiro elemento do array. Portanto, quando você passa um array para uma função, você está passando um ponteiro para o array, não o array em si.
Vamos ver isso em um exemplo:
#include <stdio.h>
void print_array(int *nums, int k) {
for(int i = 0; i < k; i++) {
printf("%d ", nums[i]);
}
}
int main() {
int nums[3];
nums[0] = 10;
nums[1] = 20;
nums[2] = 30;
print_array(nums, 3); // Aqui estamos passando o ponteiro para o array, não o array em si
return 0;
}
No exemplo acima, a função print_array
recebe um ponteiro para um array de inteiros e o tamanho do array. Ela então imprime todos os elementos do array. Note que quando chamamos print_array(nums, 3);
estamos passando o ponteiro para o array nums
, não o array em si.
Espero ter ajudado e bons estudos!