C语言函数的调用
"C语言函数的调用" C语言函数的调用是指在程序中使用已经定义好的函数,以实现代码的重用和提高程序的结构清晰度。在一个程序中,如果把所有的语句都写到main函数中,程序会变得很乱另一方面,当同一个功能需要在不同地方执行时,我们就得再重复写一遍相同的语句。如果把一些零碎的功能单独写成一个函数,在需要它们时只需进行一些简单的函数调用,这样既有助于程序结构的清晰条理,又可以避免大块的代码重复。 在实际工程项目中,一个程序通常都是由很多个子程序模块组成的,一个模块实现一个特定的功能,在C语言中,这个模块就用函数来表示。一个C程序一般由一个主函数和若干个其他函数构成。主函数可以调用其他函数,其它函数也可以相互调用,但其他函数不能调用主函数。在我们的51单片机程序中,还有中断服务函数,是当相应的中断到来后自动调用的,不需要也不能由其他函数来调用。 函数调用的一般形式是:函数名(实参列表);函数名就是需要调用的函数的名称,实参列表就是根据实际需求调用函数要传递给被调用函数的参数列表,不需要传递参数时只保留括号就可以了,传递多个参数时参数之间要用逗号隔开。 例如,在上面的程序中,我们可以把秒计数和数码管动态扫描功能都用单独的函数来实现。这样可以使程序结构更加清晰。 void SecondCount(); // 秒计数函数 void LedRefresh(); // 数码管动态扫描刷新函数 void main() { ... while (1) { ... SecondCount(); // 调用秒计数函数 LedRefresh(); // 调用显示刷新函数 } } /* 秒计数函数,每秒进行一次秒数+1,并转换为数码管显示字符 */ void SecondCount() { static unsigned int cnt = 0; // 记录 T0 中断次数 static unsigned long sec = 0; // 记录经过的秒数 cnt++; // 计数值自加 1 if (cnt >= 1000) { cnt = 0; // 达到 1000 次后计数值清零 sec++; // 秒计数自加 1 LedBuff[0] = LedChar[sec%10]; LedBuff[1] = LedChar[sec/10%10]; LedBuff[2] = LedChar[sec/100%10]; LedBuff[3] = LedChar[sec/1000%10]; LedBuff[4] = LedChar[sec/10000%10]; LedBuff[5] = LedChar[sec/100000%10]; } } /* 数码管动态扫描刷新函数 */ void LedRefresh() { static unsigned char i = 0; // 动态扫描的索引 switch (i) { case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=LedBuff[0]; break; case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=LedBuff[1]; break; case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=LedBuff[2]; break; ... } } 通过使用函数调用,可以使程序结构更加清晰,提高代码的重用性和可维护性。在实际工程项目中,函数调用是非常重要的编程技术。