Почему оператор разыменования (*) также используется для объявления указателя?

Я не уверен, что это правильный вопрос программирования, но это то, что меня всегда беспокоило, и мне интересно, единственный ли я такой.

Изучая C ++ вначале, я понимал концепцию ссылок, но указатели сбили меня с толку. Почему ты спрашиваешь? Из-за того, как вы объявляете указатель.

Примите во внимание следующее:

void foo(int* bar)
{
}


int main()
{
    int x = 5;
    int* y = NULL;

    y = &x;
    *y = 15;     
    foo(y);

}

Функция foo (int *) принимает указатель int в качестве параметра. Поскольку я объявил y как указатель int , я могу передать y в foo , но при первом изучении C ++ я связал * символ с разыменованием, поэтому я решил, что необходимо передать разыменованный int . Я бы попытался передать * y в foo , что явно не работает.

Не было бы проще иметь отдельный оператор для объявления указателя? (или для разыменования). Например:

void test(int@ x)
{
}
53
задан Archie 4 January 2012 в 01:10
поделиться