用C语言编写动态内存分配函数

用C语言编写动态内存分配函数,c,C,我试图编写一个程序,读取两个数组(及其大小), 写入新数组中同时出现的数字,并返回新数组及其大小 读了数组之后我就被甩了。 我想我在动态内存分配方面做了一些错误, 还是被整件事弄糊涂了 如果你能看一下,告诉我出了什么问题,我将不胜感激。 谢谢 #包括 #包括 整数和数组(整数*,整数*,整数,整数,整数*); void main() { int size 1、size 2、i、j、s、num1、num2、newsize; printf(“输入数组的大小>>”; 扫描单位(“%d”和尺寸1); i

我试图编写一个程序,读取两个数组(及其大小), 写入新数组中同时出现的数字,并返回新数组及其大小

读了数组之后我就被甩了。 我想我在动态内存分配方面做了一些错误, 还是被整件事弄糊涂了

如果你能看一下,告诉我出了什么问题,我将不胜感激。 谢谢

#包括
#包括
整数和数组(整数*,整数*,整数,整数,整数*);
void main()
{
int size 1、size 2、i、j、s、num1、num2、newsize;
printf(“输入数组的大小>>”;
扫描单位(“%d”和尺寸1);
int*arr1=(int*)malloc(size1*sizeof(int));
printf(“输入%d个数字:”,大小1);
对于(i=0;i>”;
扫描单位(“%d”和尺寸2);
int*arr2=(int*)malloc(size2*sizeof(int));
printf(“输入%d个数字:”,大小2);
对于(j=0;j
问题在于第二个读取循环,读取“size2”的值,但for循环检查“size1”

代码:

#包括
#包括
int*和数组(int*,int*,int,int,int*)//职能声明
int main()
//void main()
{
int size 1、size 2、i、j、s、num1、num2、newsize;
printf(“输入数组的大小>>”;
scanf(“%d”和大小1);
int*arr1=(int*)malloc(size1*sizeof(int));
printf(“\n输入%d个数字:”,大小1);
对于(i=0;i>”;
scanf(“%d”和&size2);
int*arr2=(int*)malloc(size2*sizeof(int));
printf(“\n输入%d个数字:”,大小2);
对于(j=0;j
问题在于第二个读取循环,读取“size2”的值,但for循环检查“size1”

代码:

#包括
#包括
int*和数组(int*,int*,int,int,int*)//职能声明
int main()
//void main()
{
int size 1、size 2、i、j、s、num1、num2、newsize;
printf(“输入数组的大小>>”;
scanf(“%d”和大小1);
int*arr1=(int*)malloc(size1*sizeof(int));
printf(“\n输入%d个数字:”,大小1);
对于(i=0;i>”;
scanf(“%d”和&size2);
int*arr2=(int*)malloc(size2*sizeof(int));
printf(“\n输入%d个数字:”,大小2);
对于(j=0;j
这不可能是您的实际代码。它甚至不编译。你不能在main中定义andArrays。起初我确实不小心把andArrays放在main中,但它不再是了。这不可能是你的实际代码。它甚至不编译。你不能在main中定义andArrays。起初我确实不小心把andArrays放在了main中,但它不再是了。谢谢你的帮助!当新数组超过两个数字时,它似乎仍然不起作用…请更新有问题的最新代码。确保size1和size2使用正确。您是否尝试过我共享的代码?NISM-M-9168:dirtest NISM$./a。输入数组大小>>>4,输入4个数字:[1 2
#include <stdio.h>
#include <stdlib.h>
int andArrays(int*, int*, int, int, int*);
void main()
{
    int size1, size2, i, j, s, num1, num2, newsize;
    printf("enter the size of the array >>> ");
    scanf_s("%d", &size1);
    int* arr1 = (int*) malloc(size1*sizeof(int));
    printf("enter %d numbers: ", size1);
    for (i = 0; i < size1; i++)
    {
        scanf_s("%d\n", &num1);
        arr1[i] = num1;
    }
    printf("enter the size of the array >>> ");
    scanf_s("%d", &size2);
    int* arr2 = (int*)malloc(size2*sizeof(int));
    printf("enter %d numbers: ", size2);
    for (j = 0; j < size1; j++)
    {
        scanf_s("%d\n", &num2);
        arr2[j] = num2;
    }
    int newarray = andArrays(&arr1, &arr2, size1, size2, &newsize);
    printf("size of new array is: %d", newsize);
    for (s = 0; s < newsize; s++)
        printf("%d", newarray[s]);
    free (newarray);
    free(arr1);
    free(arr2);
}

int andArrays(int* arr1, int* arr2, int size1, int size2, int* newsize)
{
    int i = 0, j = 0, num, f = 0;
    int* newarr = (int*)malloc(size1 * sizeof(int));
    while (1)
    {
        if (arr1[i] == arr2[j])
        {
            num = arr1[i];
            newarr[f] = num;
            f++;
        }
        i++;
        j++;
        if (i == size1)
            break;
    }
    *newsize = f;
    }
}
    scanf_s("%d", &size2);
    int* arr2 = (int*)malloc(size2*sizeof(int));
    printf("enter %d numbers: ", size2);
    for (j = 0; j < size1; j++)   >>>> for (j = 0; j < size2; j++)
    {
        scanf_s("%d\n", &num2);
        arr2[j] = num2;
    }
    int andArrays(int*, int*, int, int, *int);   >>>>>   int * andArrays(int*, int*, int, int, int*); //declaration of function
    #include <stdio.h>
    #include <stdlib.h>
    int * andArrays(int*, int*, int, int, int*); //declaration of function
    int main ()
    //void main()
    {
        int size1, size2, i, j, s, num1, num2, newsize;
        printf("enter the size of the array >>> ");

        scanf("%d", &size1);
        int* arr1 = (int*) malloc(size1*sizeof(int));

        printf("\nenter %d numbers: ", size1);

        for (i = 0; i < size1; i++)
        {
            scanf(" %d", &num1);
            arr1[i] = num1;
        }
        printf("\nenter the size of the array >>> ");
        scanf(" %d", &size2);

        int* arr2 = (int*)malloc(size2*sizeof(int));
        printf("\nenter %d numbers: ", size2);

        for (j = 0; j < size2; j++)
        {
            scanf(" %d", &num2);
            arr2[j] = num2;
        }

        int * newarray = andArrays(arr1, arr2, size1, size2, &newsize);
        printf("\nsize of new array is: %d\n Array : ", newsize);
        for (s = 0; s < newsize; s++)
            printf(" %d ", newarray[s]);
        //free (newarray);
        //free(arr1);
        //free(arr2);
        printf("\n");
        return 0;
    }
    int * andArrays(int* arr1, int* arr2, int size1, int size2, int* newsize)
    {
        int i = 0, j = 0, num, f = 0;
        int* newarr = (int*)malloc(size1 * sizeof(int));
        while (1)
        {
            if (arr1[i] == arr2[j])
            {
                num = arr1[i];
                newarr[f] = num;
                f++;
            }
            i++;
            j++;
            if (i == size1)
                break;
        }
        *newsize = f;
        return newarr;
    }