Ниже приведена часть кода, на который я застрял. Я хочу, чтобы динамически выделять память дляРаспределение памяти для указателя на массив и массив указателя
- Указателя на массив
- массив указателей
Я получаю несколько сообщений об ошибках, как недопустимое преобразование из 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]);
}
}
}
Я рекомендую вам начать с одномерными массивами, пока вы не знакомы с разницей между массивами и указателями, и разница заключается в указателе на массив и указателе на первый элемент массива. Кроме того, вы избегаете «malloc» этих вещей, пока не сможете написать код без него. – molbdnilo
Спасибо. Но на самом деле у меня не так много времени. Я должен исправить это через 1 час. Пожалуйста, помогите мне. Правильно ли выделена часть распределения памяти? – SKD
@Sujit Ну, вам следовало начать учиться раньше. Подсказки: В 1) 'array [i]' - двумерный массив, 'array [i] [j]' - это одномерный массив. В 2) 'array [i] [j]' является (неинициализированным) указателем, а не 'int'. – molbdnilo