“&”号可以直接访问变量的地址,那么为什么要使用指针呢?

时间:2018-12-15 12:35:39

标签: c++ pointers ampersand

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 :(得分:3)

使用&号可以获取变量的地址,而指针则可以保留该变量并将其传递给应用程序。

答案 1 :(得分:2)

在像您的示例这样的简单代码中,使用指针没有任何好处。在更复杂的情况下,它们很有用:

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;
}

这里的好处是您可以调用相同的功能,并通过传递指针将其应用于不同的变量