Подскажите, в чём ошибка? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 
int pwr (int a, int b);
 
int main (void)
{
    /* Объявление указателя на массив из 10 строк в которых хранятся целые числа (int). */
 
    int (*p)[10];
 
    register int i, j;
 
    /* выделение памяти для массива 4х10 */
 
    p = malloc (40*sizeof(int));
 
    if (!p)
    {
        printf("Trebyemaya pamat' ne videlena!\n");
        exit (1);
    }
 
    for (j=1; j<11; j++)
        for (i=1; i<5; i++)
            p[i-1][j-1] = pwr(j, i);
 
    for (j=1; j<11; j++)
    {
        for (i=1; i<5; i++)
            printf("%10d ", p[i-1][j-1]);
        printf("\n");
    }
    getch();
    return 0;
}
 
/* возведение чисел в степень */
 
int pwr (int a, int b)
{
    register int t=1;

    for (; b; b--)
        t = t*a;
        return t;
}
Выдаёт ошибку при компиляции: error C2440: '=' : cannot convert from 'void *' to 'int (*)[10]' На сколька я понимает, не может преобразовать тип. Как правильно будет?
На сколько понимаю..* Уже мимо клавиш печатаю, но перед сном хочется понять, что не так тут.

Решение задачи: «Подскажите, в чём ошибка?»

textual
Листинг программы
int main()
{
   int *p[2]; // int (*p)[n]
   p[0] = (int*) malloc( 8 );
   p[1] = (int*) malloc( 8 );
 
   //......
 
   return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. Создается массив из двух указателей на int.
  2. Каждый указатель в массиве получает адрес, выделенный динамически с помощью malloc.
  3. Размер каждого выделенного блока памяти составляет 8 байт.
  4. В коде отсутствует проверка на то, что malloc успешно выделил память.
  5. В коде также отсутствует освобождение памяти с помощью free.
  6. Возвращаемое значение 0 в конце функции означает успешный конец работы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы