理解c ++代码; * datatype和classname :: method是什么意思?

时间:2010-02-19 01:19:21

标签: c++ c

我是C ++的新手,我正在尝试理解一些代码。在数据类型前面有一个*是什么意思?为什么类名称在方法名称CAStar::LinkChild

前面
void CAStar::LinkChild(_asNode *node, _asNode *temp)
{

}

3 个答案:

答案 0 :(得分:6)

  1. 数据类型前面的A *表示变量是指向数据类型的指针,在本例中是指向节点的指针。而不是将整个“节点”的副本传递给方法,而是传入内存地址或指针。有关详细信息,请参阅Pointers in this C++ Tutorial

  2. 方法名称前面的类名指定这是定义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);

您会注意到内存地址会意外更改,具体取决于打印时程序的状态。在一个简单的程序中,你不会看到变化,但在复杂的程序中,你会看到。