Ментальная модель для void * и void **?

Примечание: Я опытный программист на C ++, поэтому мне не нужны основы работы с указателями. Это' Просто я никогда не работал с void ** , и мне было сложно настроить свою ментальную модель на void * vs. void ** . Я надеюсь, что кто-то сможет объяснить это в хорошей форме, чтобы мне было легче запомнить семантику.

Рассмотрим следующий код: (компилируется, например, с VC ++ 2005)

int main() {
  int obj = 42;
  void* ptr_to_obj = &obj;
  void* addr_of_ptr_to_obj = &ptr_to_obj;
  void** ptr_to_ptr_to_obj = &ptr_to_obj;
  void* another_addr = ptr_to_ptr_to_obj[0];
  // another_addr+1; // not allowed : 'void*' unknown size
  ptr_to_ptr_to_obj+1; // allowed
}
19
задан Martin Ba 8 April 2011 в 07:41
поделиться