表达式必须具有指向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 
    }
}