O problema no código está na função soma. Ao somar os elementos do array a, você está acessando o elemento na posição b, que é o tamanho do array, mas as posições válidas de um array vão de 0 até seu tamanho -1.
Segue uma correção da função soma:
#include <stdio.h>
#include <stdlib.h>
int soma(int* a, int b)
{
int soma = 0;
for(int i = 0 ; i < b ; i++)
{
soma = soma + a[i]; // Ajustei aqui: estava somando a[b] em vez de a[i]
}
return soma;
}
int main()
{
int nums[3];
nums[0] = 10;
nums[1] = 20;
nums[2] = 30;
int total = soma(nums, 3);
printf("%d",total);
return (0); // Adicionei um retorno 0 ao final da função main para indicar que o programa foi executado sem erros
}
Se esta resposta te ajudou, favor marcar como solucionado. :)