Ошибка 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 являются указателями, а вы пытаетесь присвоить им целочисленное значение без явного приведения типов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д