表达式必须具有指向C2中对象类型的指针 void ArrayCal(); 内部主(空) { ArrayCal();//调用fun。 返回0; 系统(“暂停”); } void ArrayCal()//这个有趣的功能是将元素扫描到指针数组中(Arr) { int a=0,b=0,c=0,row=0; printf(“输入行数:”); scanf(“%d”,&row);//扫描行 int*Arr=(int*)malloc(sizeof(int)*行);//向Arr中添加更多内存 对于(a=0;a
我正在尝试将元素扫描到指针数组中,我不知道为什么会出现此错误。这不是分配基于指针的查找表的方式。您需要首先分配一个指针数组,然后将该数组中的每个指针设置为指向分配的内存表达式必须具有指向C2中对象类型的指针 void ArrayCal(); 内部主(空) { ArrayCal();//调用fun。 返回0; 系统(“暂停”); } void ArrayCal()//这个有趣的功能是将元素扫描到指针数组中(Arr) { int a=0,b=0,c=0,row=0; printf(“输入行数:”); scanf(“%d”,&row);//扫描行 int*Arr=(int*)malloc(sizeof(int)*行);//向Arr中添加更多内存 对于(a=0;a,c,arrays,pointers,C,Arrays,Pointers,我正在尝试将元素扫描到指针数组中,我不知道为什么会出现此错误。这不是分配基于指针的查找表的方式。您需要首先分配一个指针数组,然后将该数组中的每个指针设置为指向分配的内存 问题中的代码显示了如何正确分配此资源。然而,正如对这个问题的回答所表明的,这很可能是一开始使用的错误方法 你忘了提到错误发生的地方。这不是一个bug,这是一个编译错误。您不应该强制转换malloc的结果。1)int*Arr=(int*)malloc(sizeof(int)*row)-->int**Arr=(int**)mallo
问题中的代码显示了如何正确分配此资源。然而,正如对这个问题的回答所表明的,这很可能是一开始使用的错误方法 你忘了提到错误发生的地方。这不是一个bug,这是一个编译错误。您不应该强制转换malloc的结果。1)
int*Arr=(int*)malloc(sizeof(int)*row)代码>-->int**Arr=(int**)malloc(sizeof(int*)*行)
不幸的是,您可能使用了一个不好的源代码来学习C编程,该源代码试图“教”您如何“动态分配2D数组”。此外,您需要获得一个更好的编译器,或者对正在使用的编译器启用警告。代码,如返回0;系统(“暂停”)代码>不应在任何半正常编译器上没有警告的情况下通过。
void ArrayCal();
int main(void)
{
ArrayCal();//calling fun.
return 0;
system("pause");
}
void ArrayCal()//this fun will scan elements into (Arr) the array of pointer
{
int a = 0, b = 0, c = 0, row = 0;
printf("Enter numbers of rows: ");
scanf("%d", &row);//scan rows
int* Arr = (int*)malloc(sizeof(int)*row);//to add more memory into the Arr
for (a = 0; a < row; a++)
{
printf("\nEnter array length for row %d: ", a + 1);
scanf("%d", &b);//scan length
*(Arr + a) = (int*)malloc(sizeof(int)*b);//to add more memory into the arrays
for (c = 0; c < b; c++)
{
printf("\nEnter value for array: ");
scanf("%d", Arr[row][b]);//scan value
}
}
sortPrint(Arr);//calling fun. to print the Arr
free(Arr);//to free the memory of the Arr.
for (a = 0; a < row; a++)
{
free(*(Arr + a));//to free the memory of the arrays
}
}