Я думаю, что я хорошо понимаю ссылки и указатели. Вот что я (думаю, я) знаю:
int i = 5; //i is a primitive type, the value is 5, i do not know the address.
int *ptr; //a pointer to an int. i have no way if knowing the value yet.
ptr = &i; //now i have an address for the value of i (called ptr)
*ptr = 10; //Go to the value in ptr, use it to find a location and store 10 there
Пожалуйста, не стесняйтесь комментировать или исправлять эти заявления.
Теперь я пытаюсь сделать переход к массивам указателей. Вот что я не знаю:
char **char_ptrs = new char *[50];
Node **node_ptrs = new Node *[50];
Я понимаю, что у меня есть 2 массива указателей, один набор указателей на символы и один на узлы. Поэтому, если бы я хотел установить значения, я бы сделал что-то вроде этого:
char_ptrs[0] = new char[20];
node_ptrs[0] = new Node;
Теперь у меня есть указатель в позиции 0 моего массива в каждом соответствующем массиве. Опять же, не стесняйтесь комментировать здесь, если я запутался.
Итак, что делает оператор **? Аналогично, что помещает один * рядом с созданием экземпляра (* [50])? (что именно называется, экземпляр?)