Поэтому у меня есть следующий код до сих пор:2d массивы указателей
#include <stdio.h>
int foo (int *pointer, int row, int col);
int main() {
int array[3][3] ={ {1,2,3},{4,5,6},{7,8,9}};
int *pointer= array[0];
int row = 2;
int col = 2;
int answer = foo (pointer, row, col);
printf("%d", answer); //prints 5 (which is wrong)
printf("%d", array[2][2]); //prints 9
}
int foo (int *pointer, int row, int col){ //I don't want to use any square brackets here, unless I really have to.
int value;
value = *((int *)(pointer+row)+col);
return value;
}
Так что мой главный вопрос с переходом 2D-указатель, пожалуйста, подробно объяснить, как я еще новичок в кодировании. Я не хочу, чтобы действительно изменить то, что я передаю (как я хочу использовать указатель в Foo (указатель, строка, столбец) и не Foo (массив, строка, столбец).
@Dayalrai А что, а? Все, что я могу сказать об этом, это то, что это ужасно неправильно и усиливает вред «массивы - это указатели». – 2013-05-14 09:13:06
@Dayalrai Вы ошибаетесь в том, что используете многомерные массивы и двойные указатели взаимозаменяемо, а это не так. – 2013-05-14 09:16:48
почему вы удалили вопрос. Поместите эту фразу как commanet и не удалите свой исходный вопрос – MOHAMED