Ошибка 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 ***

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

  1. Объявление переменных:
    • i, j (указатели на строки массива A)
    • A (указатель на массив строк)
  2. В каждой строке массива A выделить память под новую строку с помощью оператора new
  3. В каждой новой строке выделить память под новый массив с помощью оператора new
  4. Для каждого элемента нового массива (A[i][j]) присвоить случайное значение от 0 до 99 с помощью функции rand()
  5. Ошибка assignment makes pointer from integer without a cast [enabled by default] возникает из-за того, что вы пытаетесь присвоить целочисленное значение указателю, не приведя его к типу указателя. В вашем случае, переменная i и j являются указателями, а вы пытаетесь присвоить им целочисленное значение без явного приведения типов.

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


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

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

9   голосов , оценка 3.889 из 5