Я пытаюсь использовать указатели для обработки 2D-массива в виде массива 1D (так как это так, как я понял в памяти). Я думал, что у меня это есть, тогда я понял, что добавляю только значение ASCII 'a' (и печать abcdefghijkl вместо abcghidefjkl).Использование указателей для доступа к двумерному массиву линейно
Как я могу переписать заявление printf для печати abcghidefjkl? Кроме того, как я могу сделать это с Интс и парном (то есть - с помощью data2 и Data3)
int main()
{
int i = 0;
char data[4][3] = { {'a','b','c'},{'g','h','i'},{'d','e','f'},{'j','k','l'}};
int data2[4][3] = { {1,2,3},{7,8,9},{4,5,6},{10,11,12}};
double data3[4][3] = { {1,2,3},{7,8,9},{4,5,6},{10,11,12}};
for(i=0;i<12;i++)
{
printf("%c\n", **(data)+i*sizeof(char));
}
return 0;
}
Спасибо!
Вы пробовали * (base + i * 3 + j)? i для строки и j для столбца. Может быть * (base + i * 3 * sizeof (type) + j * sizeof (type)) –
Нет. Я пытаюсь избежать использования «j» и использовать указатели, чтобы рассматривать его как 1D-массив. – user2839180