[問題] 這樣malloc為什麼錯..?

看板C_and_CPP (C/C++)作者 (瓶子)時間15年前 (2010/10/05 01:11), 編輯推噓4(405)
留言9則, 4人參與, 最新討論串1/2 (看更多)
#include<stdio.h> #include<stdlib.h> typedef struct { int comunityx; int comunityy; int x; int y; char type; int year; } robot; typedef struct { robot **group; } comunity; int main() { int x, y, k, s; comunity **com; comunity a; int bigi, i, j, smalli, smallj; int comx, comy, gx, gy, year; char type; while(scanf(" %d%d%d%d", &x, &y, &k, &s) == 4) { com = (comunity **)malloc(x * sizeof(void*)); for(i = 0; i < y; i ++) com[i] = (comunity *)malloc(y * sizeof(comunity*)); for(i = 0; i < x; i ++) for(j = 0; j < y; j ++) { com[i][j] = malloc(sizeof(comunity)); com[i][j].group = (robot **)maloc(k * sizeof(void*)); for(smalli = 0; smalli < (2*k-1); smalli ++) com[i][j].group[smalli] = (robot*)malloc((2*k-1) * sizeof(robot*)); for(smalli = 0; smalli < k; smalli ++) for(smallj = 0; smallj < (2*k-1); smallj ++) com[i][j].group[smalli][smallj] = (robot*)malloc(sizeof(robot)); } } return 0; } 抱歉程式碼有點長,標色的是錯的地方 錯誤訊息都是 incompatible types in assignment 我想了好久還是不知道為什麼... 請板上的強者們救救我吧> < -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.200.18

10/05 01:20, , 1F
再想一想com的型態, 想一下com[i][j]是否有需要再malloc
10/05 01:20, 1F

10/05 01:21, , 2F
一次; 不過會有這種錯, 也是因為你前兩層的malloc觀念也
10/05 01:21, 2F

10/05 01:21, , 3F
有問題, 建議您先回到簡單的, int **p; malloc成兩維陣
10/05 01:21, 3F

10/05 01:21, , 4F
列的話您會怎麼寫, 再反過來看您現在的code錯在哪裡:)
10/05 01:21, 4F

10/05 02:07, , 5F
sizeof(void*) <<這個看不懂QQ
10/05 02:07, 5F

10/05 02:12, , 6F
這個是指向指標的指標的指標的指標的指標???
10/05 02:12, 6F

10/05 02:14, , 7F
malloc 只認 byte 數啦~ 硬要亂來也是可以, 看你用什
10/05 02:14, 7F

10/05 02:14, , 8F
麼型態去解釋他囉~
10/05 02:14, 8F

10/05 02:21, , 9F
sizeof(void*) 就空指標的size,同環境的長度都一樣啦~
10/05 02:21, 9F
文章代碼(AID): #1CgWhB71 (C_and_CPP)
文章代碼(AID): #1CgWhB71 (C_and_CPP)