用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;
}