Я изучал ссылки на указатели и наткнулся на разные способы ввода параметров. Может кто-нибудь объяснить, что на самом деле означает каждый из них?
Я думаю, что первый простой, это то, что 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 ++.