C++ Foo*Foo之间的差异;和富富,;在C++;
我知道指针的基本知识 我只是想知道你什么时候用C++ Foo*Foo之间的差异;和富富,;在C++;,c++,pointers,C++,Pointers,我知道指针的基本知识 我只是想知道你什么时候用 Foo *foo; 而不是 Foo foo; 一个允许你做而另一个不允许 提前感谢如果您想引用堆变量(对象在函数结束时生存),通常会使用指针,而局部变量的非指针形式(生命周期以块/函数结束) 作为成员变量,如果您在不同的引用器之间共享Foo对象,则使用指针;如果您与Foo有完整的部分关系,则使用嵌入对象。如果是变量声明,则使用Foo*Foo;声明指向Foo的指针类型的变量。Foo-Foo声明类型为Foo的变量 有关更多信息,请参阅的关于指针的
Foo *foo;
而不是
Foo foo;
一个允许你做而另一个不允许
提前感谢如果您想引用堆变量(对象在函数结束时生存),通常会使用指针,而局部变量的非指针形式(生命周期以块/函数结束)
作为成员变量,如果您在不同的引用器之间共享Foo对象,则使用指针;如果您与Foo有完整的部分关系,则使用嵌入对象。如果是变量声明,则使用Foo*Foo;声明指向Foo的指针类型的变量。Foo-Foo声明类型为Foo的变量
有关更多信息,请参阅的关于指针的文章。阅读此问题的选择答案,非常直观:您在许多情况下使用
Foo*Foo
:
1-如果返回值是Foo类型的数组
2-如果函数操作某些数据结构(特别是如果您使用的是函数范例,其中函数的唯一结果是它的返回值)
例:
此函数将列表和列表中元素的编号作为参数,并在删除所需元素后返回指向与参数相同的列表标记的指针,因此该函数只操作指针,正如您所知,指针是32位值(或者64位系统上的64位值)
3-如果返回对象的创建占用资源,那么您将返回指向现有对象的指针,尤其是在创建函数中,例如:List*createList
,Tree*createTree
。。。因为您确实在函数内部创建了数据结构,所以它存在于内存中,所以您只需返回它的地址
List * deleteListNode(int nbr, List * src) {
Node * tmp = getElementPointer(nbr, src);
tmp->prev->next = tmp->next;
tmp->next->prev = tmp->prev;
return src;
}