Ошибка assignment makes pointer from integer without a cast [enabled by default] - C (СИ)
Формулировка задачи:
выделяю память в Main - всё работает. Пытаюсь сделать функцию - куча ошибок.
#include<stdio.h> #include<stdlib.h> #define n 5 void create(int ***A); void destroy(int **A); void prt(int **A); int main() { int **A,i,j; create(&A); prt(A); destroy(A); return(0); } void prt(int **A) { int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++) printf("A[%d][%d] = %d\n",i,j,A[i][j]); } void destroy(int **A) { int i,j; for(i=0;i<n;i++) free(A[i]); free(A); } void create(int ***A) { int i,j; (*A) = (int**)malloc(n*sizeof(int*)); for(i=0;i<n;i++) (*A[i]) = (int*)malloc(n*sizeof(int)); for(i=0;i<n;i++) for(j=0;j<n;j++) A[i][j] = rand()%100; }
Решение задачи: «Ошибка assignment makes pointer from integer without a cast [enabled by default]»
textual
Листинг программы
A[i][j] = rand()%100;//Присваивание целочисленного значения указателю. У Вас A объявлена как int ***
Объяснение кода листинга программы
- Объявление переменных:
- i, j (указатели на строки массива A)
- A (указатель на массив строк)
- В каждой строке массива A выделить память под новую строку с помощью оператора new
- В каждой новой строке выделить память под новый массив с помощью оператора new
- Для каждого элемента нового массива (A[i][j]) присвоить случайное значение от 0 до 99 с помощью функции rand()
- Ошибка assignment makes pointer from integer without a cast [enabled by default] возникает из-за того, что вы пытаетесь присвоить целочисленное значение указателю, не приведя его к типу указателя. В вашем случае, переменная i и j являются указателями, а вы пытаетесь присвоить им целочисленное значение без явного приведения типов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д