在K&R的C语言书中,已经给了很经典的swap例子,我在这再举一个更简单的例子。
#include <stdio.h>
int myvar;
void def_var_value( int*);
void def_myvar_value( int *myvaradress)
{
*valueadress = 3;
}
int main(int argc, char *argv[])
{
myvar = 0;
def_var_value(&myvar );
fprintf(stdout, "myvar = %3d
", myvar);
return 0;
}
上例中,main函数初始化整型变量myvar的值为0,而通过将myvar的地址传入子例程def_myvar_value,将myvar的值修改为3,再打印出来。
值得注意的是对子例程的声明中,形参用的是指向myvar地址的指针,而主调函数的实参是取myvar的内存地址。