C语言函数

C语言函数

一、

  1. 函数是构成程序的基本模块;
  2. 从使用者角度对函数分类可分为:标准库函数自定义函数
  3. 从函数的形式来看函数可分为:无参函数有参函数
  4. C程序执行都是都从main函数开始,main结束;
  5. 除了main函数,其他函数地位都是平行的且可以相互调用;main函数是系统调用;

二、函数定义

  1. 函数的一般形式:
    返回值类型 函数名(类型 形式参数1 , 类型 形式参数2, …)
    { 函数体语句; }

函数头部中的形式参数也属于内部变量;
若函数没有返回值,需要用void来定义函数值类型,这时可以没有return语句,函数执行完再返回;且main函数中实参不能赋值给其他变量。

三. 函数的调用:

  1. 一般格式:
    函数名(实参表列);vc++2010编译器是从右向左调用实参。

  2. 函数的书写格式:

a.            b.           c.(最规范写法)
void main()  int main()    int main(void)
{            {              {
	          return (0);     return 0;
}            }              }

四. 函数的数据传递

#include  <stdio.h>

int Addition(int x,int y);//加法

int main()
{
	int a,b;
	int c;
	scanf("%d %d",&a,&b);
	c = Addition(a,b);
/*程序运行到这时,实参a,b的值会传递给形参x,y;且实参值不发生改变;*/
	printf("%d\n",c);
	printf("%d %d\n",a,b);
	
	return 0}
int Addition(int x,int y)
{
	int z;
	z = x+y;
	return z;
/*返回值也可以是表达式:return (x+y);返回值应与函数定义时的返回值类型一致;*/
}

改错题记得注意声明的类型;例如 整形除以浮点型

五. 一维数组作为函数参数

a.函数也可以写成这种格式
/*对输入值进行输出*/
#include <stdio.h>

void Put(int b[5]);
/* 也可以写为int b[],此时数组的长度可以不写*/
int main()
{
	int a[5];
	int i;
	for(i=0;i<=4;i++)
	{
		scanf("%d",&a[i]);
	}
	Put(a);//将a数组的地址传给b,传递的是所有值

	return 0;
}
void Put(int b[5])//输出;
{
	int i;
	for(i=0;i<=4;i++)
	{
		printf("%3d",b[i]);
	}
	putchar('\n');
}
b.函数还可以写成这种格式
/*对数组中一个值进行输出*/
#include <stdio.h>

void Put(int b)
{
	printf("%d\n",b);
}

int main()
{
    int a[5] = {5,6,7,8,9};
	Put(a[1]);//只传递数组中一个值
	return 0;
}

六、 二维数组作为函数参数

/*对二维数组中的值进行输出*/
#include <stdio.h>

void Put(int b[][3]);//输出;第一维的长度声明可以不写
int main()
{
	int a[2][3] = {1,2,3,4,5,6 };
	Put(a);                          
}
void Put(int b[][3])
{
	int j,k;
	for(j=0;j<=1;j++)
	{
		for(k=0;k<=2;k++)
		{
			printf("%d\n",b[j][k]);
		}
	}	
}

7. 变量作用域和存储类型

  1. 不在任何语句块内定义的变量称为 全局变量;(全局变量作用于整个程序)
#include <tdio.h>
int p;  //这就是全局变量
int main()
{
    ......
    return 0}
  1. 在语句块内定义的变量,称为 局部变量;做用于该语句块内(作用于该大括号内);
#include <tdio.h>
int main()
{
    int a = 2;//局部变量
    .....
    return 0;
}
  1. 变量定义的一般形式为 存储类型 数据类型 变量名;

  2. 变量的存储类型:自动变量、静态变量、外部变量、寄存器变量
    a.自动变量( auto ) 与该 程序块 共存亡
    一般形式为: auto 类型名 变量名 ( 例,auto int a; )

如果没有指定变量存储类型,则默认为 auto 形式;
每次自动变量进入语句块时自动申请内存,退出语句块释放内存且丢失数值(调试时会看到值成为乱码);
自动变量定义时不会自动初始化,需要赋初值;

b.静态变量 ( static )与 程序 共存亡
一般形式为: static 类型名 变量名( 例,static long sum; )

静态变量从程序开始就占内存,程序退出才释放内存;
静态变量的值在退出函数后仍能保持其值到下一次进入函数;
静态变量自动初始化值为0;

c.外部变量( extern )
一般形式为: extern 类型名 变量名

全局变量定义时没有声明存储类型则认为是外部变量
外部变量在程序运行期间会有固定的储存单元,作用域从它定义点到文件结尾;
外部变量自动初始化值为0;

d.寄存器变量( register )
一般是形式为:register 类型名 变量名

寄存器是CPU内部的一种容量有限但速度极快的存储器;
现代编译器能自动优化程序,无需特别声明register。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值