Я очень сочувствую этим типам вопросов, потому что это единственное, с чем у меня были проблемы при изучении C ++.
Основная проблема заключается в том, что в синтаксисе C ++ символы *
и &
используются для множества разных вещей со схожими, но слегка различающимися значениями.
В вашем случае вы планируете использовать *
в четырех разных местах.
Во-первых: int *iNum = new int(25);
, *
сидит в декларации. Это означает, что это аннотация типа, говорящая, что iNum
является указателем.
Во-вторых: passPointer(*iNum);
, *
сидит в выражении . Это означает, что это оператор разыменования, что означает: «получить значение, на которое указывает iNum
». В этом случае значение, указанное iNum
, равно int
. Как вы увидите позже, объявлено, что passPointer
принимает аргумент типа pointer to int
, поэтому вы не можете передать простой int
в качестве аргумента passPointer
. Вместо этого вы должны просто передать iNum
(так как iNum
означает указатель на int).
На третьем месте: void passPointer(int *pointer)
, *
снова сидит в декларации. Это означает, что он имеет то же значение, что и прежде всего - он говорит, что pointer
является указателем (на int
).
На четвертом месте: cout << *pointer;
, *
снова сидит в выражении . Это означает, что, как и во втором случае, он говорит «разыменование pointer
и получить значение, в котором pointer
хранит адрес».