C语言 —— 函数(1)

一 、函数的基本用法

  • 定义:函数是一个完成特定功能的代码模块,其程序代码独立,通常要求有返回值,也可以是空值;

           一般形式 ;<数据类型> <函数名称> (<形式参数说明>) 

                            {

                                     语句序列;

                                     return [(< 表达式 >)];

                             }

             < 数据类型 > :函数的数据类型 与return 返回的数据类型要一致。

             形式参数说明 :如果有多个形式参数,用‘,’隔开。

             语句序列 :语句序 列也可以称之为 函数体,<语句序列>由 大于或等于零条语句构成。

  • 函数的使用也叫函数的调用。

       形式 :函数名称(<实际参数>);

        实际参数 :函数在被调用时,调用函数时调入函数中的数据。需要的是一个确切的值。

        函数调用可以当作一个运算量出现在表达式中,也可以单独形成一条语句。对于无返回值的函数来讲,只能形成一个函数调用语句。

#include <stdio.h>


void fig(void)
{
    printf("zuozhe!!");
}


int main(void)
{

    printf("start !!");
    fig();               //调用函数
    printf("end !!!!!");

    return 0 ;
}

总结:两个(多个)函数的情况下,函数总是从 main函数开始执行。

           fig()函数可以被调用。

传参函数 : 

                例如 void power(double x,int y);

  • 函数要调用之前 需要先说明,让编译器 知道函数的各种参数,不然会报错。

          函数的说明就是指函数的原型。

注:函数的使用一般分为 -----------  函数的说明,函数的实现,函数的调用。

二 、 函数的参数传递

1、函数之间变量参数传递的方法

  • 全局变量

         全局变量 : 定义在函数体之外的变量,对于所有的函数而言都是可见的。

        缺点:所有的函数都可以改变它,需要时刻对该函数进行维护,不太建议使用。

  • 赋值传递方式

        调用函数将实参传递给被调用函数,被调用的函数将创建同一类型的形参并用实参进行初始化。

        形参事新开辟的存储空间,因此,在函数中改变形参的值,不会影响到实参。

      反例 :

#include <stdio.h>


int qsts(int a,int b)  //a 、b相互交换
{
	int t ;
	t = a;
	a = b;
	b = t;
}

int main(int argc, const char *argv[])
{
	int a = 20 ;
	int b = 10;



	printf("%d %d \n",a,b);

	qsts(a,b);

	printf("%d %d \n",a,b);
	return 0;
}

输出 : 20 10  ; 20 10   两者没有交换  ---------------------  改变形参的值不会改变 实参的值。

  • 地址传递方式

         将实参的地址作为 值传递给 调用函数;在调用的函数中可直接改变传过来的地址中的值。

#include <stdio.h>


int qsts(int* a,int* b)
{
	int t ;
	t = *a;
	*a = *b;
	*b = t;
}

int main(int argc, const char *argv[])
{
	int a = 20 ;
	int b = 10;



	printf("%d %d \n",a,b);

	qsts(&a,&b);

	printf("%d %d \n",a,b);
	return 0;
}

输出 : 20 10  ;10 20   两者交换成功 ;-------------------  地址传递可以 在调用函数中 改变 实参的值。 

2、数组在函数间传参

  • 全局数组传递方式
  • 复制传递方式

      实参是数组的指针,形参 是 数组名(本质是一个指针变量)

题目 :编写函数,计算一个一维整型数组 中所有元素的和。

#include <stdio.h>

int arry_sum(int arry[],int num)  //可以改成 int arry_num(int* arry,int num)
{
	int i ;
	int sum = 0 ;

	for(i = 0;i<num ; i++)
	{
		printf("%d ",arry[i]);
		sum = sum+ arry[i];
	}
	return sum;
}

int main(int argc, const char *argv[])
{
	int a[] = {3,4,5,2,5,6};
	int sum = 0 ;
    int n =0;

	n = sizeof(a)/sizeof(int);
	sum = arry_sum(a,n);

	printf("%d \n",sum);



	return 0;
}
  • 地址传递方式

     实参是数组的指针,形参 是 同类型的 指针变量

题目 :编辑函数,删除字符串中的空格

 

 

 

 

 注: 适当的时候使用Const ,会使得函数显的更加的严谨。

           

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值