Ampersand может напрямую обращаться к адресу переменной, так почему мы используем указатели? - PullRequest
0 голосов
/ 15 декабря 2018

Ampersand может напрямую обращаться к адресу переменной. Тогда почему мы используем указатели.Разве это не бесполезно?

Я использовал амперсанд и указатель и получил тот же результат.

#include <iostream>
using namespace std;

int main()
{
    int score = 5;
    int *scorePtr;
    scorePtr = &score;
    cout << scorePtr << endl;
    cout << &score << endl;
   //output 
   //0x23fe44
   //0x23fe44
    return 0;
}

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

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

void increment_value(int *ptr) {
    if (ptr)
        (*ptr)++;
}

int main() {
    int i = 3;
    increment_value(&i);
    std::cout << i << '\n'; // i is 4
    int j = 5;
    increment_value(&j);
    std::cout << j << '\n'; // j is 5
    increment_value(nullptr); // harmless
    return 0;
}

Преимущество в том, что вы можете вызвать одну и ту же функцию и применить ее к различным переменным , передавуказатель.

0 голосов
/ 15 декабря 2018

Использование амперсанда позволяет получить адрес переменной, а указатель позволяет сохранить его и передать в приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...