向函数传递指针
向函数传递指针的技术非常有用,但是它很容易掌握(译注:这里存在必然的转折关系吗?呃,我看不出来,但是既然作者这么写了,我又无法找出一个合适的关联词,只好按字面翻译了)。如果我们要编写一段程序,在其中要把一个数增加5,我们可能会像这么写:
#include void AddFive(int Number) { Number = Number + 5; } void main() { int nMyNumber = 18; printf("My original number is %d\n", nMyNumber); AddFive(nMyNumber); printf("My new number is %d\n", nMyNumber); } |
#include void AddFive(int* Number) { *Number = *Number + 5; } void main() { int nMyNumber = 18; printf("My original number is %d\n", nMyNumber); AddFive(&nMyNumber); printf("My new number is %d\n", nMyNumber); } |
你可以试着自己编写一个程序来证明这一点。注意到AddFive函数中Number之前的“*”的重要性了吗?这就是告知编译器我们要在指针Number指向的数字上加5,而不是向指针本身加5。
最后要注意的一点是,你亦可以在函数中返回指针,像下面这个样子:
int * MyFunction();
在这个例子中,MyFunction返回了一个指向整数的指针。
指向类的指针
关于指针,我还有还有两点需要提醒你。其中之一是指向结构或类的指针。你可以像这样定义一个类:
class MyClass { public: int m_Number; char m_Character; }; |
MyClass thing; |