scanf是一个函数,要让函数对参数的修改在函数返回后有效,那么必须传递该参数的地址。
最简单的例子,一个值交换函数,如下:
void swap( int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
这个函数对参数进行的交换,只在该函数中有效。
要让交换在函数返回后依旧有效,那么必须传递参数的地址,如下:
void swap( int *a, int *b )
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
调用该函数的方式是: swap( &a, &b );( 这里假设参数a,b不是指针);
顺带提一句:scanf()和printf() 这两个函数及它们的家族函数都是参数可变类型,所以这两个函数及它们家族函数并不能检测参数是否合法。
[此贴子已经被作者于2017-4-8 21:52编辑过]