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;
}
答案 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;
}
这里的好处是您可以调用相同的功能,并通过传递指针将其应用于不同的变量。