基础概念(7):函数间怎么传递数据


总结卡片:
卡片
c的函数间通过数值来传递,不管是基本类型的变量值,还是数组的地址、指针的值,传递的都只是一个数值,这个数值拷贝到被调用函数的临时变量中。
被调用函数的临时变量得到这个值后,想怎么修改都行,但都不会影响到调用函数里面的值。

#include 
int power(int a, int b) {
	int r;
	for(r=1;b>0;b--) r=r*a;
	return r;
}
int main() {
	int a=2,b=10;
	printf("power(2,10)==%d\n", power(a,b));
	return 0;
}

比如上面代码,power函数中修改了变量b,并不会影响到main函数中的变量b。
c函数没有“引用”的概念,如果想修改调用函数里面的数据,可以用数组或指针等做到,比如用数组:

#include 
#define MAX_LEN 1024
int line(char c[], int len) {
	int rlen=0;
	char ch;
	while(rlen

main调用line时,把字符数组c传递过去,实际是把数组的地址传递过去,line函数拿到数组c,就能修改到main函数中的数组的内容,因为line跟main的数组地址,指向同一个内存块。