以下是我卡住的代码部分。我想要为以下内容动态分配内存:
- 指向数组的指针
- 指针数组
我遇到了一些错误,比如从int *到int的无效转换等等。
指向数组的指针
int (*array)[nrows][ncolumns];
array = (int*)malloc(nrows * ncolumns * sizeof(int));
printf("\n Enter the elements:\n");
for(i=0; i<nrows; i++)
{
for(j=0; j<ncolumns; j++)
{
scanf("%d", array[i][j]);
}
}
printf("Entered array is :\n\n");
for(i = 0;i<nrows; i++)
{
for(j = 0; j<ncolumns; j++)
{
if(j== ncolumns-1)
{
printf("%d \n", *array[i][j]);
}
else
{
printf("%d", *array[i][j]);
}
指针数组
int *array[nrows][ncolumns];
array[nrows][ncolumns] = (int*)malloc(nrows * ncolumns * sizeof(int));
printf("Enter elements:\n");
for(i = 0; i<nrows; i++)
{
for(j = 0; j<ncolumns;j++)
{
scanf("%d",&array[i][j]);
}
}
printf("Entered array is: \n");
for(i = 0; i<nrows; i++)
{
for(j = 0; j<ncolumns;j++)
{
if(j == ncolumns-1)
{
printf("%d \n",array[i][j]);
}
else
{
printf("%d \t",array[i][j]);
}
}
}
array[i]
是一个二维数组,array[i][j]
是一个一维数组。在2)中,array[i][j]
是一个(未初始化的)指针,而不是int
。 - molbdniloarray[nrows][ncolumns]
是数组之外的元素;对其进行赋值是未定义的。 - molbdniloscanf(“%d”,&array [i] [j]);
和printf(“%d”,array [i] [j]);
。 - M.M