初学者指针指南
2006-04-11 22:54:17 来源:WEB开发网#include <stdio.h>
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是传递到这个函数中的nMyNumber的一份拷贝,而不是nMyNumber本身。因此,“Number = Number + 5”这一行则是向这份拷贝加上了5,而main()中的原始变量并没有任何变化。你可以运行这个程序试着证明这一点。
对于这个程序,我们可以向函数传递这个数字内存地址的指针。这样,我们就需要修改这个函数,使之能接收一个指向整数的指针。于是,我们可以添加一个星号,即把“void AddFive(int Number)”改为“void AddFive(int* Number)”。下面是这个修改过了的程序,注意到我们已经将nMyNumber的地址(而不是它本身)传递过去了吗?此处改动是添加了一个“&”符号,它读作(你应该回忆起来了)“the address of(……的地址)”。
#include <stdio.h>
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);
}
更多精彩
赞助商链接