我是C ++的新手,我正在尝试理解一些代码。在数据类型前面有一个*是什么意思?为什么类名称在方法名称CAStar::LinkChild
void CAStar::LinkChild(_asNode *node, _asNode *temp)
{
}
答案 0 :(得分:6)
数据类型前面的A *表示变量是指向数据类型的指针,在本例中是指向节点的指针。而不是将整个“节点”的副本传递给方法,而是传入内存地址或指针。有关详细信息,请参阅Pointers in this C++ Tutorial。
方法名称前面的类名指定这是定义CAStar
类的方法。有关详细信息,请参阅Tutorial pages for Classes。
答案 1 :(得分:3)
*
表示它是pointer。您还会发现_asNode *node
等同于_asNode* node
。
如果未在class { ... }
中定义方法,则类名在方法名称前面。 ::
是scope operator。
答案 2 :(得分:2)
你是一般的编程新手,还是C ++的新手?如果您是编程新手,可能需要参加一些课程。如果您刚刚接触C ++,可以尝试在线Practical C++ Programming阅读C++ Primer。
关于你的具体问题:在变量声明中,星号表示“这是一个指针”:
int * pointer;
这也包括声明变量的函数声明/原型,如示例所示。
声明后,星号表示您正在取消引用指针。也就是说,您将获得它指向的位置的值。
printf("memory address:%d value:%d", pointer, *pointer);
您会注意到内存地址会意外更改,具体取决于打印时程序的状态。在一个简单的程序中,你不会看到变化,但在复杂的程序中,你会看到。