В чем разница между следующими объявлениями?Разница между `int (* B) [COLSIZE];` и `int * C [ROWSIZE];`?
int (*B)[COLSIZE];
int *C[ROWSIZE];
B = (int (*)[COLSIZE])malloc(ROWSIZE * sizeof(int[COLSIZE]));
for (int i=0; i < ROWSIZE; ++i)
C[i] = (int *)malloc(COLSIZE * sizeof(int));
Я понимаю, что оба варианта - это разные способы объявить двухмерный массив. Но я не могу понять разницу между ними. Любое иллюстративное объяснение будет высоко оценено.
Если у вас возникли трудности с пониманием декларации C, попробуйте использовать http://cdecl.org. –
@PaulR +1 Это одна полезная ссылка! – Sabuncu
Я очень рекомендую классическую статью Эндрю Кенига, которая очень помогла мне в прошлом: http://www.literateprogramming.com/ctraps.pdf – Sabuncu