《C基础语法学习》PPT课件.ppt_第1页
《C基础语法学习》PPT课件.ppt_第2页
《C基础语法学习》PPT课件.ppt_第3页
《C基础语法学习》PPT课件.ppt_第4页
《C基础语法学习》PPT课件.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基本C语言,目录,C程序 数据类型 常量、变量 结构、联合 运算符、表达式 基本语句 函数 输入、输出,一个C程序由声明和函数组成。 声明描述了函数和(或)函数将要操作的数据类型(有时候是数据本身)。 函数定义了需要执行的工作。 一个C程序可以保存于一个或多个源文件中,一个源文件中可以有多个函数。 C文件(.c),头文件(.h) 所有的C程序必须有一个main函数,它是程序的起点。,C程序,从源文件到可执行程序,数据类型,不同数据类型区别,可进行的操作不同 数据取值范围不同 数据占内存存储空间的长度不同,整型数据 整型数据分为一般整型(int)、短整型(short)和长整型(long),并且每一种类型又分为带符号(signed)和无符号(unsigned)两种类型 。,可以通过sizeof(int)得到int所占的字节数 或者 int i; sizeof(i);,实型数据分为单精度实型(float)、双精度实型(double)和长双精度实型(long double) ANSI标准规定long double至少和double一样长,double至少和float一样长。所有浮点类型范围至少能够容纳10-37到1037之间的任何值。,字符型数据分为一般字符型(char)、带符号字符型(signed char)和无符号字符型(unsigned char)三种类型。具体情况见下表所示 :,枚举 语言提供了一种“枚举”类型,在枚举类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义中列举出来的常量的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。 声明 enum ; 定义,enum weekday sun,mon,tue,wed,thu,fri,sat ;,typedef enum FC_I_MDS_IDLE = 0, /空闲 FC_I_MDS_CHANNEL_ID, /设置频道号 FC_I_MDS_PARA_RESET, /参数初始化 FC_I_MDS_START_NETTING, /启动组网 FC_I_MDS_DELAY, /延时处理 FC_I_MDS_READ_MODULE_STATE, /读取模块状态 FC_I_MDS_DEAL_END, /处理完成 MODULE_OP_STATE_I_T; /模块操作处理 MODULE_OP_STATE_I_T gModuleOpState_FC_I = FC_I_MDS_IDLE;,(1)先声明后定义 enum weekday ; enum weekday a,b,c;,(2)声明的同时定义 enum weekday . a,b,c;,(3)直接定义 enum a,b,c;,typedef 允许你为各种数据类型定义新名字。 char * ptr_to_char;/声明变量ptr_to_char为指向字符的指针 typedef char * ptr_to_char;/声明把标识符ptr_to_char作为指向字符的指针类型的新名字 ptr_to_char a;/声明a是一个指向字符的指针,在程序运行过程中,其值不能被改变的量称为常量。 常量定义 #define方式 尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串 用关键字const定义。 const int a; int const a; 常量赋值 声明时初始化:int const a = 15; 在函数中声明为const的形参在函数被调用时会得到实参的值,常量,符号常量,常量定义规则 需要对外公开的常量放在头文件中,不需要对外公开的常量放在C文件的头部 如果某一常量与其它常量密切相关,应在定义中包含这种关系,而不应给出一些孤立的值 例如: const float RADIUS = 100; const float DIAMETER = RADIUS * 2; #define RADIUS 100,其值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。在该存储单元中存放该变量的值。,3,a,变量名(一个符号地址,在对程序编译时系统分配给它一个内存地址),变量值(在程序中对变量取值,实际上是通过变量名找到相应内存地址,从其存储单元中读取数据),存储单元,变量,作用域 标识符的作用域是程序中该标识符可以被使用的区域 文件作用域 任何在所有代码块之外声明的标识符都具有文件作用域 代码块作用域 任何在代码块的开始位置声明的标识符都具有代码块作用域 原型作用域 只适用于函数原型中声明的参数名 函数作用域 它只适用于语句标签,语句标签用于goto语句。一个函数中的所有语句标签必须唯一 一个函数中的所有语句标签必须唯一,位于一堆花括号之内的可选的声明和语句列表,类似函数定义时的函数头,又称函数声明,链接属性 标识符的链接属性决定如何处理在不同文件中出现的标识符 链接属性有三种 external(外部) 不论声明多少次、不论是否在同一个源文件中,总是被当作同一个实体 internal(内部) 在同一个源文件中被当作同一个实体,但在不同的源文件中被当作不同的实体 none(无) 该标识符的多个声明被当作独立不同的实体,具有文件作用域的标识符默认为external链接属性,可以在这些标识符前面加上static关键字,使其链接属性变更为internal,其它作用域的标识符默认具有none标识符,在标识符加上extern关键字,使其链接属性变更为external。,程序运行中内存,存储类型 变量的存储类型是指存储变量值的内存类型。 在任何代码块之外声明的变量总是存储于静态内存中,这类变量称为静态变量 静态变量在程序运行过程中始终存在 如果不显式的初始化这类变量,此类变量将被自动初始化为0.这类变量无法再指定其它的存储类型 在代码块内部声明的变量的缺省类型为自动的,也就是说它存在于堆栈中,称为自动变量。 如果给这类变量加上 static 关键字,则其存储类型变为静态变量 自动变量不会显式的初始化 函数的形参不能声明为静态 关键字 register 可以用于自动变量的声明,提示它们应该存储于机器的硬件寄存器而不是内存中,这类变量称为寄存器变量,static关键字 当它用于函数定义时,或用于代码块之外的变量声明时,static关键字用于修改标识符的链接属性(从external改为internal),但是存储类型和作用域不受影响。用这种方式声明的函数或变量只能在声明它的源文件中访问 当它用于代码块内部的变量声明时,static关键字用于修改变量的存储类型,从自动变量改为静态变量,但变量的链接属性和作用域不受影响。,数据经常以成组的形式存在 比如学生信息有姓名、年龄、生日等信息 它们是不同的数据类型,结构、联合,结构 声明,struct SIMPLE int a; char b; ; struct SIMPLE x; struct SIMPLE *z;,typedef struct int a; char b; Simple;/用typedef创建一种新的类型 Simple x; Simple *z;,struct int a; char b; x;,struct int a; char b; *z;,struct int a; char b; x,*z;,第一种方法,第二种方法,第三种方法,直接访问 通过点操作符(.)访问。 例如:访问结构x的成员a,x.a; 间接访问 void func(struct SIMPLE *cp); cp-a; 等同于 (*cp).a;,结构 初始化 一个位于一堆花括号内部、由逗号分隔的初始值列表可用于结构各个成员的初始化。 struct INIT_EX int a; short b10; Simple c; x; x= 10, 1,2,3,4,5, 25,x,1.9 ,联合 联合的声明和结构类似。 联合的所有成员引用的是内存中的相同地址。 初始化 初始值必须是联合第一个成员的类型,并且必须位于一对花括号里面。 union int a; float b; char c4; x = 5;,typedef union DBL_PAT df; double d; U;,根据运算符的运算对象的个数,C语言的运算符分为单目运算符、双目运算符和三目运算符,如单目+,双目,三目?:等。运算符具体分类情况见下表所示。,运算符,自增、自减运算符+ - 作用:使变量值加1或减1 种类: 前置 +i, -i (先执行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再执行i+1或i-1),说明: + - 不能用于常量和表达式,如5+,(a+b)+ 优先级:- + - -* / % -+ -,例 1-i+ 1-(i+) i=3; printf(“%d”,1-i+); /-2,例 1-i+ i=3; printf(“%d”,1-i+);,逻辑运算符与表达式 短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。 例 a (m=ab)&(n=cd) 0,逗号运算符及逗号表达式 一般形式如下: 表达式1,表达式2,表达式n,逗号表达式的操作过程是:先计算表达式1,再计算表达式2,最后再计算机表达式n,而逗号表达式的值为最右边表达式n的值。 如: a=4.5,b=6.4,34.5-20.1,a-b,该逗号运算表达式,它由四个表达式结合而成,从左向右依次计算, 逗号表达式的值为a-b的值,即-1.9。 注意 逗号运算符是C语言所有运算符中优先级最低。如:a=10,20;不同于 a=(10,20);,前者a的值为10,表达式的值为20,后者a的值为20,表达式 的值也为20。,空语句 表达式语句 if语句,;,x = y+3;,if(expression) statement else statement ,语句,不要忘了加括号 else子句从属于最靠近它的不完整的if语句,if ( i 1) if ( j 2) printf(“i1n”); else printf(“elsen”); ,if ( i 0) else if(i = 0) else ,while语句 for语句 do语句,do statement while(expression),for(int i=1; i=10; i+) printf(“%dn”, i); ,int i=1; do printf(“%d”, i); i+; while(i = 10),while(expression) statement ,for(expr1; expr2; expr3) statement ,int i=1; while(i = 10) printf(“%d”, i); i+; ,break:永久终止循环 continue:终止当前的那次循环,switch语句,switch(expression) case expression: statement1 default: statement2 ,switch(weekday) case 0: printf(“星期日”); break; case 1: printf(“星期一”); break; case 2: printf(“星期三”); break; default: break; ,函数,C 程序是由函数构成的 一个C程序至少包括一个函数(main函数:它代表程序开始执行的起始位置),也可以包括一个main函数和若干其它函数。因此,函数是C程序的基本单位。,C程序中有三种类型的函数 1).main():主函数,每一个C程序必须且只有一个main()函数。 2).开发系统提供的特殊函数,如printf( )、scanf( )等。 3).程序员自己设计的函数,函数定义 函数定义的语法如下: 类型 函数名(形参类型 形参) 函数体 int function_name(int a) 函数声明 int function_name(int a);,函数体一般包括: 变量定义。int a; 执行部分。由若干个语句组成。 当然,在某些情况下也可以没有变量定义部分。甚至可以既无变量定义也无执行部分,如: dump() 它是一个空函数,什么也不干,但这是合法的。,函数的参数 传值调用 传递给函数的标量参数是传值调用的 传址调用 传递给函数的数组参数在行为上就像传址调用的那样,C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的。C对输入输出实行“函数化”。 C语言通过调用系统函数来实现输入输出: 1.printf() 2.putchar() 3.puts() 4.scanf() 5.getchar() 6.gets(),输入、输出,格式说明符简介,十六进制无符号整数,不带符号十进制整数,int a=567;printf ( “%d”,a);,int a=255;printf(“%x”,a);,int a=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论