1、调用函数前需要声明函数原型。如:
int function (int number, char str);//[函数类型][函数名][参数列表]
//函数返回值类型与函数类型一致
/*若函数无返回值,则函数类型为void*/
void function (int ,char );
/*在函数原型中使用变量名并没有实际创建变量,故可以在声明函数原型时在
参数列表只给出对应的参数类型和参数个数 ,但在定义函数时要给出参数的变量名 */
#include<stdio.h>
void function (int ,char );
int main(void){
int m=5;
char ch='*';
function(m,ch);//主函数中使用被调函数时不得在实际参数前加上变量类型
return 0;
}
void function (int mr,char chr ){
for( ;mr>=0;mr--){
printf("%c\t",chr);
}
//return void;函数无返回值时 return void是错误写法
}
2、进行参数传递时,参数也可以是符号常量
void show_char (char ch,int number);
int main(void){
int n=1;
show_char('*', n);
return 0;
}
3、指针作为参数时,被调函数可以通过指针间接改变主调函数中指针所指向的变量的值,也可通过指针在被调函数中使用主调函数中变量存储的内容
#include<stdio.h>
void function (int* ,char* );
int main(void){
int * m;
int result=5;
m=&result;
char* ch="string";
printf("result = %d\n",result);
function( m,ch);
//若m 和 ch 为非指针变量可直接传入参数地址 如 function( &m,&ch);
printf("result = %d\n",result);
return 0;
}
void function (int* m,char* chr ){
printf("%s\n",chr);
*m=6;
}
/* 输出如下 */
result = 5
string
result = 6
4、在被调函数中改变指针变量指向的存储空间不会对主调函数造成影响
#include<stdio.h>
void function (int* );
int main(void){
int * m=NULL;
int result=5;
m=&result;
printf("%p\n",m);
function( m);
printf("%p\n",m);
return 0;
}
void function (int* m ){
printf("%p\n",++m);
}
/*输出如下:
000000000062FE14
000000000062FE18
000000000062FE14
*/