Я учу об указателях:Указатели 2D массивы C, C++
int x[10];
int *p = &x
это сделало бы тип указателя int
на первый элемент. Итак, если у меня есть 2D-массив, мне нужно использовать двойной указатель: первый указатель указывает на второе измерение массива. Это означает:
int x[3][4] = {{1,2,3,4},{5,6,7,8},{9,9,9,9}};
и когда я хочу указать на него, я должен объявить размер второго измерения следующим образом, не так ли?
int *p[4] = x;
или есть другой способ путем ввода: int **p
; ?
и int *p[4]
- массив целых указателей, который принимает 4 * (sizeof(int*))
, правильно?
Просто в стороне: попробуйте избегать указателей alltogether в C++. Используйте 'std :: vector' или' std :: array' вместо массивов в стиле C. – xtofl
«_'int * p [4]' - массив целых указателей, который принимает '4 * (sizeof (int *))', right? _ "- Да. И ** всегда ** компиляция с включенными предупреждениями ('-Wall -Wextra'). Затем вы заметите предупреждения о несовместимых типах указателей при компиляции кода. Таким образом, это даст вам указание, что что-то не так. –
хорошо .. mingw32-g ++. Exe -o ............................ Процесс завершен со статусом 0 (0 минут, 0 секунд) 0 ошибок, 0 предупреждений (0 минут, 0 секунд) и: int x [3] [4] = {{1,2,3,4}, {5,6,7,8 }, {9,987,9,9}}; int (* p) [4] = x; printf ("% d", p [2] [1]); printf ("\ nsize of * p is:% d \ n", sizeof (p)); ------------------------------------------------- ------------- вывод: размер * p есть: 4 –