Я хочу передать указатель массива на функцию, затем malloc и перераспределить ее. Функция завершается, но после того, как я получаю сообщение об ошибке сегментации (сбрасывается ядро), прежде чем вернуться к основному.
Я не слишком знаком с указателями C, я использовал в основном C ++ для своих кодов, не знаю, как использовать указатели в качестве ссылок.
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;
Заголовок:
void egyesit(int *A, int *B, int *C, int n,int m,int *k);
Функция в другом файле c:
#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");
}