C语言5种程序语句(2)——函数语句
2015-08-08 16:07
274 查看
C语言有5种类型的语句:
(1)表达式语句包括:运算符表达式语句、赋值语句。
(2)流程控制语句包括结构化语句和非结构语句;
A.结构化语句包括:条件语句和循环语句;
a.条件语句包括:if语句和switch语句;
b.循环语句包括:while语句、do while语句和for语句。
B.非结构化语句包括:限定转向语句和非限定转向语句;
a.限定转向语句:break语句、continue语句和return语句;
b.非限定转向语句:goto语句。
函数:为完成一定功能的可执行代码块。函数的定义、声明和调用等。
函数是C语言源程序的基本功能单位。
函数的调用:由另一个函数触发,但函数的定义都是平行的,即:不允许把一个函数定义在另一个函数内,不同函数定义放置位置没有关系。
函数定义4要素:参数列表、返回类型、函数名和函数体。
形式:
返回类型 函数名(参数列表)
{
函数体;
}
(1)参数列表
形式:类型 变量名1,类型 变量名2,类型 变量名3,……;
注:如果参数列表为空,可以填“void”,但“()”不可省略;
(2)返回类型:指明函数输出的类型;
注:如果没有输出值,返回类型为void,如果在函数定义时没有注明返回类型,默认为int。
(3)函数名:标示该函数,和其他函数区分。
(4)函数体:实现特定功能的代码块;注:在函数体内声明的变量不能和参数列表中的变量同名。
形参:函数定义时列表中的参数;(直到被调用时,系统才给分配存储空间,函数执行结束返回时。创建的形参被撤销)
实参:函数调用时传递进来的参数。
传址调用
例子:
#include<stdio.h>
#include<conio.h>
void swap(int*a,int *b);
void swap(int*a,int *b) //函数头,传递的是指针
{
int temp;
printf("a is %d,b is%d\n",*a,*b); /*两个形参交换前输出,间接访问*/
temp=*a; //临时变量
*a=*b;
*b=temp;
printf("a is %d,b is%d\n",*a,*b); //两个形参交换之后输出
}
void main(void)
{
int num1=3,num2=5;
printf("num1 is %d,num2 is%d\n",num1,num2); //函数执行前输出
swap(&num1,&num2); //函数调用,实参是两个变量的地址
printf("num1 is %d,num2 is%d\n",num1,num2); //函数执行后输出
getch();
}
结果:
num1 is 3,num2is 5
a is 3,b is 5
a is 5,b is 3
num1 is 5,num2is 3
函数返回
定义:
int bigger(int a,int b)
{
if(a>b)
return a; //返回值
else
return b;
}
结构化除了控制结构:顺序、分支和循环外,还有模块化设计。对于模块:一个入口一个出口。
(1)表达式语句包括:运算符表达式语句、赋值语句。
(2)流程控制语句包括结构化语句和非结构语句;
A.结构化语句包括:条件语句和循环语句;
a.条件语句包括:if语句和switch语句;
b.循环语句包括:while语句、do while语句和for语句。
B.非结构化语句包括:限定转向语句和非限定转向语句;
a.限定转向语句:break语句、continue语句和return语句;
b.非限定转向语句:goto语句。
函数:为完成一定功能的可执行代码块。函数的定义、声明和调用等。
函数是C语言源程序的基本功能单位。
函数的调用:由另一个函数触发,但函数的定义都是平行的,即:不允许把一个函数定义在另一个函数内,不同函数定义放置位置没有关系。
函数定义4要素:参数列表、返回类型、函数名和函数体。
形式:
返回类型 函数名(参数列表)
{
函数体;
}
(1)参数列表
形式:类型 变量名1,类型 变量名2,类型 变量名3,……;
注:如果参数列表为空,可以填“void”,但“()”不可省略;
(2)返回类型:指明函数输出的类型;
注:如果没有输出值,返回类型为void,如果在函数定义时没有注明返回类型,默认为int。
(3)函数名:标示该函数,和其他函数区分。
(4)函数体:实现特定功能的代码块;注:在函数体内声明的变量不能和参数列表中的变量同名。
形参:函数定义时列表中的参数;(直到被调用时,系统才给分配存储空间,函数执行结束返回时。创建的形参被撤销)
实参:函数调用时传递进来的参数。
传址调用
例子:
#include<stdio.h>
#include<conio.h>
void swap(int*a,int *b);
void swap(int*a,int *b) //函数头,传递的是指针
{
int temp;
printf("a is %d,b is%d\n",*a,*b); /*两个形参交换前输出,间接访问*/
temp=*a; //临时变量
*a=*b;
*b=temp;
printf("a is %d,b is%d\n",*a,*b); //两个形参交换之后输出
}
void main(void)
{
int num1=3,num2=5;
printf("num1 is %d,num2 is%d\n",num1,num2); //函数执行前输出
swap(&num1,&num2); //函数调用,实参是两个变量的地址
printf("num1 is %d,num2 is%d\n",num1,num2); //函数执行后输出
getch();
}
结果:
num1 is 3,num2is 5
a is 3,b is 5
a is 5,b is 3
num1 is 5,num2is 3
函数返回
定义:
int bigger(int a,int b)
{
if(a>b)
return a; //返回值
else
return b;
}
结构化除了控制结构:顺序、分支和循环外,还有模块化设计。对于模块:一个入口一个出口。
相关文章推荐
- C++_友元函数
- C++内存对象大会战
- 【C语言】把从1到1000的数打印出来,但你不能使用任何的循环语句或是条件语句。
- 剑指offer刷题之c++实现的树的子结构
- C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)
- 【C语言】冒泡排序与回文判断
- 【C语言】在终端输入多行信息,找出包含“ould”的行,并打印改行。
- C++使用CInternetSession请求url下载jason数据,并且进行解析。以及注意事项
- 【C语言】学生成绩链表的录入
- 指针函数与函数指针的区别
- C语言结构体学习系列之(二)
- c语言time.h函数库小结
- 【C语言】杨氏矩阵C语言实现
- C++ 类的静态成员详细讲解
- 【C语言】在字符串中找出第一个只出现一次的字符。 如输入“abaccdeff”,则输出'b'。
- c语言解析xml文档
- C语言-time.h从头学(转)
- C++调用C#的DLL
- (C/C++学习笔记)操作符重载的两种方法
- JAVA基础篇六(Java,C++中的流)