[为什么]将指针传递给函数
将指针传递给函数的能力非常有用,但也很容易掌握。如果我们要编写一个程序,接受一个数字并将其加五,我们可能会编写如下内容:
#includevoidAddFive(intNumber){Number=Number+5;}voidmain{intnMyNumber=18;printf("Myoriginalnumberis%d\n",nMyNumber);AddFive(nMyNumber);printf("Mynewnumberis%d\n",nMyNumber);}

然而,这样做的问题是Number提到AddFive是变量的副本nMyNumber传递给函数,而不是变量本身。因此,线Number=Number+5将5添加到副本中,将原始变量保留在变量的main不受影响。尝试运行程序来证明这一点。
为了解决这个问题,我们可以将一个指向数字在内存中保存位置的指针传递给该函数,但我们必须更改该函数,以便它需要一个指向数字的指针,而不是一个数字。为此,我们改变voidAddFive(intNumber)到voidAddFive(int*Number),添加星号。这又是程序,做了一些改动。请注意,我们必须确保我们传递的地址nMyNumber而不是数字本身?这是通过添加&标志,(你会记得)被读作“地址”。
#includevoidAddFive(int*Number){*Number=*Number+5;}voidmain{intnMyNumber=18;printf("Myoriginalnumberis%d\n",nMyNumber);AddFive(&nMyNumber);printf("Mynewnumberis%d\n",nMyNumber);}

试着想出一个你自己的例子来证明这一点。注意到AddFive函数中Number之前的*的重要性了吗?这需要告诉编译器我们要将5加到变量Number指向的数字上,而不是将5加到指针本身上。关于函数的最后一点要注意的是,您也可以从它们返回指针,如下所示:
int*MyFunction;

在此示例中,MyFunction返回一个指向整数的指针