| char * pmatrix1 = &matrix1[0][0]; Not sure if this is correct. It depends on the '&' operator; I'd have to look it up. For safety, write &(matrix1[0][0]). So which part doesn't compile? To access the element, simply use *pmatrix1.