一、函数的定义:
1、函数:函数是具有某一特定功能的若干代码的集合,当需要使用这些代码实现该项功能的时候调用该函数的名字即可。
定义一个:
函数的返回值类型 函数名(函数参数类型 参数名a,函数的参数类型 参数名b)
{
函数体;
}
int func(int a,int b) //函数的定义
{
printf("%d %d\n",a,b);
return 0;
}
func(1,2); //函数的调用
注:1.函数原则上可以有无数个参数,但通常就3个左右,也可以不带参数
2.各参数之间用逗号分割
3.函数如果没有返回值,那么函数返回值类型为void,在函数结尾可以写return;也可以不写
4.如果函数有返回值,那么它返回什么值,函数的返回值类型就是相应的类型。
5.原则上一个函数只能最多有1个返回值。
函数的声明:如果函数的定义在调用的后面,在调用之前声明函数,建议函数的定义放在调用的前面(不用函数声明)
声明的方法,最简单的就是把定义函数的第一句话抄过去,带参数的函数,可以直接抄过去,也可以参数的名字不写,但是参数的类型必须要写
函数的使用:
1.函数必须先定义再使用,如果想先使用,必须在使用它之前声明它,声明的方法,最简单的就是把定义函数的第一句话抄过去,带参数的函数,可以直接抄过去,也可以参数的名字不写,但是参数的类型必须要写
2.使用函数通过调用该函数的名字,有带参数的函数要给它传递参数进去,不带参数的不传
2、函数定义的注意点:
1、函数定义不能嵌套定义(不能放在其他函数内)
2、函数除了main函数外,其他函数定义时,返回值类型不能省略。
3、如果函数的返回值是int float double char 指针等,函数必须要加return 返回值变量,
return后面的值的数据类型必须要与函数返回值的数据类型保持一致。
4、void:空类型
5、函数定义和声明后面的()里面的内容必须一致,函数参数名可以不写,但类型必须写。
6、
3、变量的作用区域分为:
全局变量:在函数外面定义的变量(要在程序开始的时候(所有函数前面定义)定义全局变量);全局有效。
局部变量:是在函数内部定义的变量,在函数内部使用。
注意:变量作用域决定变量的可访问
当局部变量和全局变量重名的时候,以最后见到的变量为准。
变量的存储方式:
静态存储:
动态存储:
4、
auto:自动变量,函数结束,则变量消失,空间释放。 int a=9;其实是 auto int a=9;
static:静态变量,声明出来必须有唯一确定值。
当程序开始使用的时候给变量开辟空间,直到程序结束后变量才消失,空间才释放
当程序第一次调用时保留这次调用的值,下次再使用时保留上一次的值
const:只能读取,不可修改
1》 int const a;const int a;等同
int a=1;
2》 int * const p;//p这个变量只读,将来这个指针只能指向a。
3》 const int *p;//使用p访问这个变量只读
4》 const int * const p;//使用p访问这个变量只读,p这个变量只读,将来这个指针只能指向a
二、传参类型实例:
-------------------------------------无参数
include <stdio.h>
void Print(); //如果函数的定义在调用的后面,在调用之前声明函数
void main()
{
Print();//函数的调用
}
void Print()//定义函数
{
printf("i am very good\n");
}
-----------------------------------有1个参数
include <stdio.h>
int Print(int);
void main()
{
int b=5;
int c;
c=Print(b); //a=b 赋值是个拷贝的过程
printf("c=%d\n",c);
}
int Print(int a)//函数的定义
{
printf("a=%d\n",a);
return a;
}
--------------------------------------------有一个指针参数
void swap(int *p,int q)//交换两个数的值
{ int tmp=p;
p=q;
*q=tem;
}
int main()
{
int a=3,b=4;
swap(&a,&b);//指针参数 传地址,从地址上改变两个数的值
printf("a=%d b=%d\n"a,b);
}
怎么向一个函数里面传地址:
include <stdio.h>
void Print(int *); //参数是地址的时候
void main()
{
int a=5;
Print(&a); // int *p=&a
}
void Print(int p)
{
printf("a=%d\n",p);
}
---------------------------向一个函数里传递数组:
方法1:
include <stdio.h>
void Print(int a[]); //参数是数组 函数声明
void main()
{
int b[5]={1,2,3,4,5};
int k=sizeof(b)/sizeof(int);//计算数组中数据的个数
Print(b,k);
}
//定义一个函数
void Print(int a[],int size) //参数是指针
{
int i=0;
for(i=0;i<size;i++)
printf("%d\n",a[i]);
}
方法2:
include <stdio.h>
void Print(int *);
void main()
{
int b[5]={1,2,3,4,5};
int k=sizeof(b)/sizeof(int);//计算数组中数据的个数
Print(b,k);
}
void Print(int *a,int size) //参数是指针
{
int i=0;
for(;i<size;i++)
printf("%d ",a[i]);
}