为什么我要传递一个指向函数的指针

Why should I pass a pointer to a function?

本文关键字:一个 函数 指针 我要 为什么      更新时间:2023-10-16

我决定自己尝试学习c++,现在我有一个关于指针的问题。我知道指针是做什么的,但有人能解释一下这两段代码的区别吗?

我有一个结构student:

struct student {
    char* name;
    int age;
    int grade;
};

和两种输出方式:

void printData(student p) {
    cout << p.name << endl;
    cout << p.age << endl;
    cout << p.grade << endl;
}
int main() {
    student ST = { "Dave",20,81 };
    printData(ST);
    return 0;
}

:

void printData(student* p) {
    cout << p->name << endl;
    cout << p->age << endl;
    cout << p->grade << endl;
}
int main() {
    student ST = { "Dave",20,81 };
    printData(&ST);
    return 0;
}

问题是:为什么我应该坚持与指针,如果我可以只是传递一个学生对象到printData函数?

因为它更便宜。按值传递会创建一个新的副本。传递一个指针不(通过ref传递会有点干净,我认为)。在这种情况下,这可能无关紧要,因为你的学生有几个领域。然而,如果您有更大的对象或很多对象,那么您将开始注意到性能上的巨大差异。更多信息请参见:按引用传递和按值传递的区别是什么?