c - Failed to create a simulated 2D dynamic array in a structure -
struct level_info { char **map; } level[level_amount]; (int cnt_1 = 0; cnt_1 < level_amount; cnt_1++) { level[cnt_1].map = malloc(rbn_col * sizeof(char*)); (int cnt_2 = 0; cnt_2 < rbn_col; cnt_2++) level[cnt_1].*(map+cnt_2) = malloc(rbn_row * sizeof(char)); /* line 10 */ }
gcc says: expected identifier before 「*」 token @ line 10, how prepare it?
replace
level[cnt_1].*(map+cnt_2) = malloc(rbn_row * sizeof(char)); with
*(level[cnt_1].map+cnt_2) = malloc(rbn_row * sizeof(char)); or
level[cnt_1].map[cnt_2] = malloc(rbn_row * sizeof(char)); as sizeof(char) defintion 1 do
level[cnt_1].map[cnt_2] = malloc(rbn_row); or remain flexible in terms of map points do
level[cnt_1].map[cnt_2] = malloc(rbn_row * sizeof(level[cnt_1].map[cnt_2][0])); additionally please note prefered type index arrays size_t, not int.
so snippet should like:
struct level_info { char ** map; } level[level_amount]; (size_t cnt_1 = 0; cnt_1 < level_amount; ++cnt_1) { level[cnt_1].map = malloc(rbn_col * sizeof(level[cnt_1].map[0])); (size_t cnt_2 = 0; cnt_2 < rbn_col; ++cnt_2) { level[cnt_1].map[cnt_2] = malloc(rbn_row * sizeof(level[cnt_1].map[cnt_2][0])); } } c pointers
No comments:
Post a Comment