Понимание кода C++; что делает *тип данных и имя класса:: средний метод?

Я плохо знаком с C++, и я пытаюсь понять некоторый код. Что означает иметь * перед типом данных? и почему имя класса перед именем метода CAStar::LinkChild

void CAStar::LinkChild(_asNode *node, _asNode *temp)
{

}
6
задан Ozan 19 February 2010 в 01:27
поделиться

3 ответа

Если разбить диапазон индекса на неперекрывающиеся диапазоны, как вы предлагали, то при условии, что массив создается в общей памяти (т.е. не каждым потоком), блокировки не требуются.

-121--4746196-

Как насчет использования реализации связанного списка? В одном столбце будет содержаться значение (номер заказа) следующего предмета. Я думаю, что это намного проще всего использовать при вставке заказов между ними. Не нужно перенумеровать.

-121--906675-
  1. A * перед типом данных говорит, что переменная является указателем на тип данных, в данном случае указателем на узел. Вместо передачи копии всего «узла» в метод вместо него передается адрес памяти или указатель. Для получения дополнительной информации см. Указатели в данном учебном пособии по C++ .

  2. Имя класса перед именем метода определяет метод класса CAStar . Для получения дополнительной информации см. Учебные страницы для классов .

6
ответ дан 9 December 2019 в 22:33
поделиться

* означает, что это указатель . Вы также обнаружите, что узел _asNode * эквивалентен узлу _asNode * .

Имя класса находится перед именем метода, если метод не определен внутри класса {...} . :: - это оператор области видимости .

3
ответ дан 9 December 2019 в 22:33
поделиться

Вы новичок в программировании в целом или только в C++? Если вы новичок в программировании, то вам, вероятно, стоит взять несколько уроков. Если вы только начинаете изучать C++, вы можете попробовать прочитать Практическое программирование на C++ или C++ Primer.

Что касается вашего конкретного вопроса: в объявлении переменной звездочка означает "это указатель":

int * pointer;

Это также относится к объявлениям/прототипам функций, где объявляются переменные, как в вашем примере.

После объявления звездочка означает, что вы отменяете ссылку на указатель. То есть, вы получаете значение в том месте, на которое он указывает.

printf("memory address:%d value:%d", pointer, *pointer);

Вы заметите, что адрес памяти будет меняться неожиданно, в зависимости от состояния программы на момент ее печати. В простой программе вы не увидите изменения, а в сложной - увидите.

2
ответ дан 9 December 2019 в 22:33
поделиться