C语言程序与函数

C语言是一种由丹尼斯·里奇在贝尔实验室开发的面向过程的编程语言,以其丰富的运算符、数据类型和模块化的函数设计著名。程序开发涉及编写包含main函数的源代码,通过编译器转换为二进制目标代码。C语言的流程控制包括条件判断、循环和转向语句,且函数是程序的基本模块,允许直接访问内存地址,具有高度的可移植性。
摘要由CSDN通过智能技术生成

C语言程序开发过程

C语言名称的由来

*C语言是一种面向过程的程序设计语言。
C语言是由丹尼斯·里奇(Dennis Ritchie)于1972年在贝尔实验室开发出来的,最初目的是为了更好地描述UNIX操作系统。
C语言开发过程
C语言既保持了B语言的精炼、接近硬件的特点,又克服了B语言过于简单、数据无类型的缺点。

C语言的特点

  1. 使用方便
    C语言共有32个关键字1,还有9种控制语句,书写形式自由、灵活。

  2. 运算符丰富、表达能力强
    C语言共有45个运算符2,用户可以灵活使用C语言所提供的运算符构成表达式来描述实际问题。

  3. 数据类型丰富

  4. *以函数作为模块单位
    C语言的输入和输出都是通过调用系统提供的库函数实现的,而不像其它程序设计语言是通过语句来实现,从而实现了程序设计的模块化。

  5. 允许直接访问物理地址

  6. 生成目标代码质量高

  7. 可移植性好

程序开发过程

用C语言编写的程序需要编译程序把C语言程序转换为二进制目标代码。
一个C语言程序是由一个或多个具有独立功能的模块组成的,这些模块称为函数。在这些函数中,必须有一个函数名为main的主函数,函数是组成程序的基本单位。
程序开发过程如下:
程序开发过程
一个C语言程序的执行是从main函数开始,直到main函数结束。

函数及其结构

一个C语言程序由若干个函数构成,而每一个函数又由若干条语句组成,通过这些语句实现对数据的描述和操作,所以*语句是组成函数基本单位

语句

C语言规定每个语句必须由“ ; ”结束,必不可少。

  • 说明语句
    用来完成对数据的描述,通过说明语句定义变量。
  • 可执行语句
    用来完成对数据的操作。
    (1)表达式语句
    表达式+;
    (2)函数调用语句:把函数调用作为一条语句。

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

调用了库函数printf
(3)空语句:只由一个分号构成。
(4)复合语句:用一对花括号括起来。
一般格式:{语句1 语句2 ···语句n}
花括号内的语句可以是说明语句也可以是可执行语句,但说明语句应在可执行语句的前面。
(5)流程控制语句;用于控制程序的流向,由系统提供的特定关键字组成。C语言有9种流程控制语句,可分成以下三类。

条件判断语句:if语句、switch语句.
循环语句:do while语句、while语句、for语句。
转向语句:break语句、continue语句、return语句、goto语句。

标识符

标识符是用来标识某个实体的符号,如函数的名字、变量的名字等。

  1. 系统标识符:是C语言的关键字1,包括数据类型标识符、存储类别标识符、流程控制标识符和sizeof求存储长度运算符。
  2. 预定义标识符:是C语言系统中预先定义使用的标识符,如系统常量名、库函数3名等。
  3. 用户定义标识符:用户在程序中所使用的标识符。
    标识符的命名规则:以字母或下划线开头,由字母、数字、下划线组成
Sum、a、temp、p_2都是合法的用户标识符,而3b、c#和p-1都是不合法的用户标识符。
  • 用户标识符不能与系统提供的关键字同名
  • 标识符区分大小写字母
  • 最好不要使用预定义标识符

函数定义

一般格式:

返回值类型 函数名(参数类型1 形式参数名1 ,···,参数类型N 形式参数名N)
{
数据定义
数据操作
}
  • 返回值类型是由系统提供的类型标识符,用以说明该函数返回值的类型。
  • 形式参数简称为形参,参数类型是系统提供的类型标识符,用以说明相应形参的类型。
  • 函数定义中的“返回值类型 函数名(参数类型1 形式参数名1 ,···,参数类型N 形式参数名N)”称为函数头
  • 一对花括号必不可少,其内的部分称为函数体。
  • 如果函数有返回值,通常在函数体内必须有return语句,用来返回函数执行的结果,如果函数没有返回值,即函数返回值类型被定义为void,return语句可省略不写。
    return语句的一般格式:
return(表达式);
  • 一对圆括号可省略不写,此时表达式与return之间要留有空格。
    return语句的作用:使程序流程从被调函数返回到主调函数的函数调用处,并将被调函数的返回值带回到函数调用处。

函数调用及函数声明

  1. 函数调用
    把调用其它函数的函数称为主调函数,相应的其它函数称为被调函数。
    一般格式:
[变量=]被调函数名(实际参数表)
  • 实际参数简称为实参,实参可以是常量,也可以是变量,还可以是表达式,但变量和表达式都必须有确定的值。
  • 参数传递:在执行函数调用时,系统将为每个形参变量分配存储空间,并把实参的值传递给对应的形参,即把实参值写到对应形参变量的存储空间,所以每个实参在函数调用之前都必须有确定的值。
  • 函数调用的作用:*使程序流程转向被调用的函数,执行被调函数,完成被调函数的功能。
    2.函数声明:
    格式:类型标识符 函数名(形参表);
    -函数声明是一个说明语句,必须在结尾加上分号。
    -如果被调用函数写在主调函数之前,函数声明可省略不写。
    -作用:向编译系统提供必要的信息,包括函数名、函数类型、形参类型、形参个数及排列顺序,以便编译系统对函数调用进行检查。

主函数的结构

书写格式:

int main()
{
数据定义
数据输入
函数调用
数据输出
return 0;
}
  • main函数可以出现在其它函数之外的任意位置,有且仅有一个
  • 返回值的类型是int为C99标准
  • 数据定义部分用来定义主函数中将要用到的变量,包括函数声明。数据输入部分用来为所定义的需要用户输入数据的变量输入数据,建议在数据输入前给出相应提示。
  • 通过函数调用来实现程序的预定功能,避免把程序的预定功能都写在主函数中。
  • return 0;用于通知操作系统程序正常结束,如果返回一个非0值则表示程序非正常结束。

注释

1.以/*开头,以*/结束,中间写待注释的内容。可注释多行,必须成对使用。
2.以//开头,在其后写待注释的内容。只能注释一行。

注释可出现在程序的任何位置,对程序的编译和执行不产生影响。
注释的作用:增强程序的可读性和用于对程序进行调试。
【例】求矩形的周长。

#include<stdio.h>
int Perimeter(int x,int y);//函数Perimeter的声明
int main()
{
int length,wide,pmt;//定义主函数中用到的变量
printf("请输入矩形的长和宽:");//输入提示
scanf("%d%d",&length,&wide);//调用输入函数
pmt=Perimeter(length,wide);//函数调用
printf("矩形的周长是:%d\n",pmt);//调用输出函数
return 0;
}
/*以下是函数Perimeter的定义*/
int Perimeter(int x,int y)//函数头
{
int z;//定义函数中用到的变量
z=2*x+2*y;//数据操作
return z;//返回操作结果
}

  1. auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if while static
    32个关键字详解 ↩︎ ↩︎

  2. 运算符详解 ↩︎

  3. 库函数 ↩︎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值