Создание 2d массива с использованием структуры
Итак, я только что запустил структуру и был заинтересован в ее реализации, чтобы создать матрицу смежности для использования в реализации алгоритма, связанного с графом, поэтому я создаю указатель на переменную указателя в графе, чтобы использовать ее в качестве базового адреса для 2d-матрицы, но при попытке назначить память массиву показывает мне ошибку: преобразование в нескалярный тип запрошено может ли кто-нибудь помочь мне? я публикую весь код следующим образом:-
Что я уже пробовал:
struct graph{ int v; int e; struct graph **admat; }; void main() { int x,i,y,z=1,n; struct graph *G=(struct graph **)malloc(sizeof(struct graph)); printf("\nenter number of vertices: "); scanf("%d",&G->v); printf("\nenter number of edges: "); scanf("%d",&G->e); G->admat=(struct graph **)malloc(G->v * sizeof(struct graph *)); for(i=0;i<G->v;i++) { G[i]=(struct graph)malloc(G->v * sizeof(int));//here is the main error } for(x=0;x<i;x++) { for(y=0;y<i;y++) { G[x][y]=z++; } } for(x=0;x<i;x++) { for(y=0;y<i;y++) { printf(" %d ",G[x][y]); } printf("\n"); } }
CPallini
Почему вы написали:
график структура *г=(графа структуры **) [...]
?
Nawaz Sk
это указатель указателя на?
CPallini
В то время как G объявлен как одиночный указатель, в правой части выражения у вас есть двойной указатель.
Arthur V. Ratz
Я полностью согласен с CPallini