Подскажите, в чём ошибка? - 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; }
На сколько понимаю..* Уже мимо клавиш печатаю, но перед сном хочется понять, что не так тут.
Решение задачи: «Подскажите, в чём ошибка?»
textual
Листинг программы
int main() { int *p[2]; // int (*p)[n] p[0] = (int*) malloc( 8 ); p[1] = (int*) malloc( 8 ); //...... return 0; }
Объяснение кода листинга программы
В этом коде:
- Создается массив из двух указателей на int.
- Каждый указатель в массиве получает адрес, выделенный динамически с помощью malloc.
- Размер каждого выделенного блока памяти составляет 8 байт.
- В коде отсутствует проверка на то, что malloc успешно выделил память.
- В коде также отсутствует освобождение памяти с помощью free.
- Возвращаемое значение 0 в конце функции означает успешный конец работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д