指针新手,它们之间有什么区别?

New to pointers, what's the difference between these?

本文关键字:什么 区别 之间 新手 指针      更新时间:2023-10-16

这两个函数都重写了原始值,对吗?这样做有什么好处吗?

#include <iostream>
using namespace std;
void passptr(int *p)
{
    *p = 7;
}
void passaddy(int &a)
{
    a = 7;
}
int main()
{
    int a = 5;
    int *p = &a;
    passptr(p);
    cout << a << endl;
    a = 5;
    passaddy(a);
    cout << a << endl;
    return 0;
}

在这种情况下,引用是优越的,因为您不会犯指针的所有常见错误——引用必须始终指向它们引用的对象类型,并且永远不能是NULLnullptr,这自动消除了处理指针的许多头痛问题。

一些编译器可以使用指针来实现引用,但是两者的语义是不同的。这些语义在不同情况下都很有用。在这里,不需要记住解引用指针会更容易一些——这是另一个令人讨厌的抽象层,在编写代码时不会被它绊倒。在其他情况下,使用NULL指针或引用可能是有利的。