用来修饰指针做函数传参,作用就在于声明在函数内部不会改变这个指针所指向的内容。
2、函数需要向外部返回多个值时怎么办?
(1)一般来说,函数的收入部分就是函数参数,输出部分就是返回值。问题是函数的参数可以有很多个,而返回值只能有1个。这就造成我们无法让一个函数返回多个值。
(2)现实编程中,一个函数需要返回多个值是非常普遍的,因此完全依赖于返回值是不靠谱的,通常的做法是用参数来做返回(在典型的linux风格函数中,返回值是不用来返回结果的,而是用来返回0或者负数用来表示程序执行结果是对还是错,是成功还是失败)。
(3)普遍做法,编程中函数的输入和输出都是靠函数参数的,返回值只是用来表示函数执行的结果是对(成功)还是错(失败)。如果这个参数是用来做输入的,就叫输入型参数;如果这个参数的目的是用来做输出的,就叫输出型参数。
1 #include2 3 int multip5_3(int a, int *p) 4 { 5 int tmp; 6 7tmp = 5 * a; 8if (tmp > 100) 9{ 10 return -1; 11} 12else 13 { 14 *p = tmp; 15 return 0; 16 } 17} 18 19 int main(void) 20 { 21 int a, b = 0, ret = -1; 22 23 a = 30; 24 ret = multip5_3(a, &b);//a 为输入型参数,b为输出型参数 25 if (ret == -1) 26 { 27 printf("出错了\n"); 28 } 29 else 30 { 31 printf("result = %d.\n", b); 32 } 33 return 0; 34 35 36}
输出结果:
1 出错了
(4)输出型参数就是用来让函数内部把数据输出到函数外部的。
3、小结:
(1)看到一个函数的原型后,怎么样一眼看出来哪个参数做输入哪个做输出?函数传参如果传的是普通变量(不是指针)那肯定是输入型参数;如果传指针就有2种可能性了,为了区别,经常的做法是:如果这个参数是做输入的(通常做输入的在函数内部只需要读取这个参数而不会需要更改它)就在指针前面加const来修饰;如果函数形参是指针变量并且还没加con