2013-06-14 3 views
0

Я пытаюсь решить разницу между тремя следующими объявлениями в C++. Я приложил мои догадки:проблема C++ array/pointer declarations

  • const float *x[4] - 4-элементный массив указателей на массивы постоянных поплавков
  • const float (*x)[4] - Я запутался здесь ... это то же самое, что и выше?
  • const float *(*x)[4] - то же самое, что и выше, но «на массивы массивов постоянных поплавков»

Любая помощь/объяснения будут оценены.

+2

Получить 'cdecl' и не оглядывайтесь назад. –

+0

@CarlNorum определенно, вы правы. :) – ducin

ответ

4

Использование cdecl знать заявление,

  1. const float *x[4] - Признаться х как массив 4 указателя на константный поплавок
  2. const float (*x)[4] - Признаться х как указатель на массив 4 сопзИте поплавок
  3. const float *(*x)[4] - Объявить x в качестве указателя в массив 4 указателя на const float

Источник: cdecl.org

+0

Должен признаться, правила cdecl !!! – ducin

2
const float *x[4] - 4-element array of pointers on arrays of constant floats 

4-элементный массив указателей на постоянные поплавки.

const float (*x)[4] - I'm confused here... is it the same as above? 

Указатель на 4-элементный массив постоянных поплавков.

const float *(*x)[4] - the same as above but "on arrays of arrays of constant floats" 

Указатель на 4-элементный массив указателей на постоянные поплавки.

1
const float *x[4] - An array of pointers to constant floats 
const float (*x)[4] - A pointer to an constant float array with 4 elements 
const float *(*x)[4] - A pointer to an array of pointers to constant float