I want to pass an array pointer to a function, then malloc and realloc it. The function end, but after I get a Segmentation fault (core dumped) error before returning to the main.
I'm not too familiar with C pointers, I used mainly C++ for my codes, don't know how to use pointers as references.
Main:
#include <stdio.h>
#include <stdlib.h>
#include "header.h"
int main(){
int A[]={1,2,4,5,7};
int B[]={1,2,3,4,6,8};
int *C=NULL;
int k=0;
egyesit(A,B,C,5,6,&k);
int i;
for (i = 0; i < k; i++)
    {
        printf("%d ", C[i]);
    }
    printf("\n");
return 0;
Header:
void egyesit(int *A, int *B, int *C, int n,int m,int *k);
Function in a different c file:
#include <stdio.h>
#include <stdlib.h>
void egyesit(int *A, int *B, int *C, int n, int m, int *k)
{
    int i, j;
    C = (int *)malloc(n * sizeof(int));
    *k = n;
    for (i = 0; i < n; i++)
    {
        printf("%d ", A[i]);
        C[i] = A[i];
    }
    printf("\n");
    for (i = 0; i < *k; i++)
    {
        printf("%d ", C[i]);
    }
    printf("\n");
    int ok;
    for (i = 0; i < m; i++)
    {
        ok = 1;
        printf("%d ", B[i]);
        for (j = 0; j < *k; j++)
        {
            if (C[j] == B[i])
            {
                ok = 0;
                break;
            }
        }
        if (ok == 1)
        {
            *k=*k+1;
            C = (int *)realloc(C, *k * sizeof(int));
            C[*k - 1] = B[i];
        }
    }
    printf("\n");
    for (i = 0; i < *k; i++)
    {
        printf("%d ", C[i]);
    }
    printf("\n");
}
 
     
     
    