Когда самое подходящее время для использования *, & или const в C ++?

Я изучал ссылки на указатели и наткнулся на разные способы ввода параметров. Может кто-нибудь объяснить, что на самом деле означает каждый из них?

Я думаю, что первый простой, это то, что x - это копия введенного параметра, поэтому в стеке создается другая переменная. Что касается других, я невежественен.

void doSomething1(int x){
    //code
}
void doSomething2(int *x){
    //code
}

void doSomething3(int &x){
    //code
}
void doSomething3(int const &x){
    //code
}

Я также вижу подобные вещи, когда объявляются переменные. Я не понимаю различий между ними. Я знаю, что первый поместит 100 в переменную y в стеке. Он не создаст новый адрес или что-то в этом роде.

//example 1
int y = 100;

//example 2
int *y = 100;

//Example 3: epic confusion!
int *y = &z;

Вопрос 1: Как мне использовать эти методы? Когда это наиболее целесообразно?

Вопрос 2: Когда я могу объявить переменные таким образом?

Примеры были бы замечательными.

PS это одна из основных причин, по которой я не изучал C ++, поскольку в Java просто есть мусор коллекция. Но теперь мне нужно освоить C ++.

11
задан Null 2 July 2015 в 20:52
поделиться