Макрос общей длины массива для C? [дубликат]

Я видел несколько плавающих макросов для длины массива:

Из этот вопрос :

  • #define length (array) (sizeof (array) / sizeof (* (array)) )
  • #define ARRAY_LENGTH (массив) (sizeof ((array)) / sizeof ((array) [0]))
  • #define SIZE (массив, тип) (sizeof (массив) / (sizeof (тип) )

И Visual Studio _countof :

#define _countof(_Array) (sizeof(_Array) / sizeof(_Array[0]))

Я хотел бы знать следующее:

  1. В чем разница между теми, кто использует array [0] и * array ?
  2. Почему следует отдавать предпочтение тем или другим?
  3. Отличаются ли они в C ++?
32
задан Community 23 May 2017 в 12:25
поделиться