Somar dois vetores em C

Crie uma função que receba como parâmetros dois vetores de inteiros: x1 e x2 e o valor n que representa o tamanho de ambos os vetores. A função deverá retornar um ponteiro para um terceiro vetor,x3x3, alocado dinamicamente, contendo a soma de x1x1 e x2x2.

int* soma(int * x1, int * x2, int n);

entrada : 8
1 2 3 4 5 6 7 8
1 2 34 5 8 1 4 9
saida:
2 4 37 9 13 7 11 17

//Segue o código

#include “stdio.h”
#include “stdlib.h”

int *soma(int *x1, int *x2, int n){
int i;
int *sum = (int *) malloc(n * sizeof(int));
if(sum == NULL){
printf(“Memoria insuficiente\n”);
exit(1);
}
for(i = 0; i < n; i++){
sum[i] += x1[i] + x2[i];
}
return sum;
}

int main(){
int i, n;
scanf("%d", &n);
int x1[n];
int x2[n];
for(i = 0; i < n; i++){
scanf("%d", &x1[i]);
}
for(i = 0; i < n; i++){
scanf("%d", &x2[i]);
}
int *resp = soma(x1, x2, n);
for(i = 0; i < n; i++){
printf("%d ", resp);
}
free(resp);
return 0;
}

sum[i] = x1[i] + b[i]
e nao +=

ta imprimindo lixo
$ ./main
8
1 2 3 4 5 6 7 8
1 2 34 5 8 1 4 9
25228320 25228320 25228320 25228320 25228320 25228320 25228320 25228320

O erro está nesta linha:

printf("%d ", resp);

O correto, já que vc quer imprimir indice por indice, seria:

printf("%d ", resp[i]);

Observações extras:

Quando for incluir cabeçalhos da biblioteca padrão, ao invés de usar aspas, por uma questão de convenção, procure fazer assim (com os sinais de maior e menor):

#include <stdio.h>
#include <stdlib.h>

Quando usar o for, procure declarar a variável de controle dentro dele, assim:

for (int i = 0; i < length; i++) { /* ... */ }

Isso pode evitar bugs chatos e é um recurso que está disponivel a partir de C99.

Sim, eu li o codigo linha por linha e vi o erro, mas obrigado!
Eu usava < e >, mas meu professor usa " " e eu passe usar assim tbm, não faz diferença.
Os professores do meu curso utilizam o Codebench para listas de exercício e provas e declarar o i, dentro do for, dá um erro de compilação, por isso declaro fora do for.