2015-04-17 5 views
0

Так у меня есть программа с структуройКак я могу получить динамически выделенный 2D-массив в C?

typedef struct s_struct { 
    int rows; 
    int cols; 
    char* two_d; //This is supposed to be the 2D array 
} *GRID; 

Я хочу, чтобы создать и ударил динамически выделять память для него, а затем заполнить 2D массив, но я не знаю, как. Вот что у меня есть для функции создания (интермедиат носы, внутр pcols):

GRID grid = malloc(sizeof(struct s_struct)); 
grid ->rows = prows; 
grid ->cols = pcols; 
grid ->two_d = malloc(sizeof(char) * (rows*cols)); 

Я не понимаю, как это создает 2D массив, если даже он делает и как я могу идти о заполнении массива.

+1

[Это] (http://www.geeksforgeeks.org/dynamically-allocate-2d-array-c/) может помочь. – Axalo

+0

@Axalo Спасибо, кучка. Я дам ему прочитать – code

+0

Есть много сообщений на SO по этому вопросу. Оформить заказ http://stackoverflow.com/search?q=[c]+create+dynamic+2D+array. –

ответ

-1

эта линия:

grid ->two_d = malloc(sizeof(char) * (rows*cols)); 

распределяет 'непрерывен в памяти' сетка/матрица , которую можно ссылаться:

grid[row_offset][cols_offset] 

где 'row_offset' может быть 0 ... (строка-1)

где 'cols_offset' может быть 0 ... (перевалы-1)

note: 'sizeof(char)' is always 1, 
so including that phrase 
in the malloc parameter just clutters the code 
because '(1*something)' is always 'something' 
as the 1 has no effect. 

предложить: удалить 'SizeOf (Char)' от параметра таНос

+1

Доступ к ней невозможен с помощью 'grid [row_offset] [cols_offset]' –

Смежные вопросы