Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Minha resolução do desafio

#include <stdio.h>

int soma(int nums[], int k) {
    int soma = 0;

    for(int i = 0; i < k; i++) {
        soma += nums[i];
    }

    return soma;
}

int main() {
    int nums[3];
    nums[0] = 10;
    nums[1] = 20;
    nums[2] = 30;

    int total = soma(nums, 3);

    printf("A soma dos array e: %d", total);
    return 0;
}
1 resposta
solução!

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!