C语言——函数

结构

返回值类型  函数名(参数列表){

            函数体

            返回值

}

有些编译器在主函数后定义的函数需要在主函数前声明:返回值类型  函数名(参数列表);

用数组作函数的参数

当数组作为函数的参数时,只传递数组的地址,而不是将整个数组赋值到函数中,当数组名作为实参调用函数时,指向该数组的第一个元素的指针就被传递到函数中。

#include

void  Evaluate(int* pPoint);				/*声明函数,参数为可变长度数组*/
void  Display(int* pPoint);				/*声明函数,参数为可变长度数组*/

int main()
{
	int iArray[10];							/*定义一个具有10个元素的整型数组*/

	Evaluate(iArray);						/*调用函数进行赋值操作,将数组名作为参数*/
	Display(iArray);						/*调用函数进行赋值操作,将数组名作为参数*/
	return 0;
}
/*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*						数组元素的显示						*/
/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
void  Display(int* pPoint)					/*定义函数,参数为可变长度数组*/
{
	int i;									/*定义整型变量*/
	for(i=0;i<10;i++)						/*执行循环的语句*/
	{									/*在循环语句中执行输出操作*/
		printf("the member number is %d\n",pPoint[i]);
	}
}
/*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*						进行数组元素的赋值						*/
/*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
void  Evaluate(int* pPoint)				/*定义函数,参数为可变长度数组*/
{
	int i;									/*定义整型变量*/
	for(i=0;i<10;i++)						/*执行循环语句*/
	{									/*在循环语句中执行赋值操作*/
		pPoint[i]=i;
	}
}

指针作为函数参数

void Function(int *point){

}

int array[10];
Function(array);

main函数的参数

#include

int main(int argc,char* argv[]){

    printf("%d\n",argc);            //1
    printf("%s\n",argv[0]);         //输出程序位置
    return 0;
}

argc参数保存命令行的参数个数,是整型变量,这个参数的值至少W为1,因为至少程序名就是第一个参数

argv参数是一个指向字符指针数组的指针,这个数组中的每一个元素都指向命令行实参,所有命令行实参都是字符串,任何数字都是有程序转变为适当的格式。

函数调用

函数语句调用

函数表达式调用

函数参数调用

嵌套调用

在语言中,函数的定义是互相平行的、独立的。在定义函数时,一个函数内不能嵌套另一个函数

错误写法:

int main(){
    void Display(){

    }
}

C语言不允许嵌套定义函数,但允许嵌套调用函数

递归调用

递归的实现在于函数的每个执行过程在栈中都有自己的形参和局部变量的副本,这些副本和该函数的其他执行过程不发生关系。

内部函数

定义:static  返回值类型  函数名(参数列表)

内部函数的好处:内部函数只可以在源文件中使用,不必担心使用的函数时候会与其他源文件中的函数同名。

#include

static char* GetString(char* pString)			/*定义赋值函数*/
{
	return pString;								/*返回字符*/
}

static void ShowString(char* pString)			/*定义输出函数*/
{
	printf("%s\n",pString);						/*显示字符串*/
}

int main()
{
	char* pMyString;							/*定义字符串变量*/

	pMyString=GetString("Hello!");				/*调用函数为字符串赋值*/
	ShowString(pMyString);						/*显示字符串*/

	return 0;
}

外部函数

定义:extern  返回值类型  函数名(参数列表)

注意:C语言中如果不指定函数时内部还是外部,则默认指定函数为外部函数,即extern可以省略。

局部变量

位于不同作用域的变量可以是用相同的标识符(为变量起相同的名字)

#include

int main()			/*主函数main中*/
{
	int iNumber1=1;			/*在第一个iNUmber1定义位置*/
	printf("%d\n",iNumber1);		/*输出变量值*/

	if(iNumber1>0)
	{
		int iNumber1=2;		/*在第二个iNUmber1定义位置*/
		printf("%d\n",iNumber1);	/*输出变量值*/

		if(iNumber1>0)
		{
			int iNumber1=3;	/*在第三个iNUmber1定义位置*/
			printf("%d\n",iNumber1);/*输出变量值*/
		}

		printf("%d\n",iNumber1);	/*输出变量值*/
	}

	printf("%d\n",iNumber1);		/*输出变量值*/
	return 0;
}

C语言——函数_第1张图片

全局变量

全局变量不属于 某个函数,属于整个源文件。如果外部文件需要进行使用,则需要使用extern关键字进行引用修饰

常见函数

 

函数名 功能 定义 头文件 注意
abs() 取整数的绝对值 int  abs( inti  i ); #include  

labs()

取长整数的绝对值

long  labs(long n)

同上  
fabs() 返回浮点数的绝对值 double fabs(double  x) 同上  
sin() 求正弦值 double sin(double  x) 同上  
cos() 求余弦值 double cos(double  x) 同上  
tan() 求正切值 double tan(double  x) 同上  
isalpha() 检测字母

int isalpha(int  ch)

#include 是字母则返回值为非零,否则为0
isdigit() 检测数字 int isdigital(int  ch) 同上 是数字则返回值为非零,否则为0
isalnum() 检测字母或数字 int isalnum(int  cg) 同上 是数字或者字母则返回值为非0,否则为0

定义一个数组,存放10个元素,代表10个学生的成绩,设计函数,将数组名作为函数的参数,函数功能是求着10个学生的平均成绩。

#include 

double avg(int array[10]){
    int sum;        //总和
    double result;  //接受平均值
    for(int i=0; i<10; i++){
        sum += array[i];
    }

    return result=sum/10;
}

int main()
{
    int score[10];  //成绩数组

    for(int i=0; i<10; i++){
        printf("请输入第%d个数字:",i+1);
        scanf("%d",&score[i]);
    }

    printf("平均成绩为:%f",avg(score));

    return 0;
}

 

你可能感兴趣的:(C语言,c语言)