C语言快速入门_第1页
C语言快速入门_第2页
C语言快速入门_第3页
C语言快速入门_第4页
C语言快速入门_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

C语言快速入门王武

蔡逢煌2013.10目录什么是程序?数据及其表示数据处理的基本方法程序流控制函数构造数据类型指针预处理1.什么是程序?程序是为了完成某一特定功能的智能体。本质上是实现对数据的处理,得到新的数据。输入数据输出数据程序2.数据及其表示天气预报:时间段:几点到几点天气状况:晴、多云、阴、等等温度值:多少度风力情况:微风2.数据及其表示如何对上述不同的数据进行表示?需要考虑什么因素?主要考虑的因素:取值范围占据空间大小2.1基本类型char字符型int整型数float单精度浮点数double双精度浮点数【特别说明】在嵌入式MCU中,分定点型MCU和浮点型MCU。一般定点型MCU使用较多,因此浮点数数据类型我们不讲。2.2有符号数和无符号数有符号数:所表示的数据有正有负以及0,前缀符:signed。无符号数:所表示的数据只有正数和0,前缀符:unsigned。有符号字符型signedchar=char无符号字符型unsignedchar有符号整型数signedint=int无符号整型数unsignedint2.3常量与变量变量描述变化的量,可以改变其值。常量描述不变的量,不可以改变其值,比如常数。2.4变量的定义格式:数据类型变量名;数据类型变量名列表;例:charAge;//定义一个字符型变量AgeintNo,Name;//定义2个整型数变量

No和Name。变量名命名原则:以下划线和字母开头,后跟下划线、字母和数字。大小写不同,要有意义。变量就是存储空间的一个别名,只是为了记忆方便而诞生的。因此变量名一定要有意义,不然就失去别名的意义了。示例:GPIO_0_Mode_GeneralPurpose=0,//!<Denotesageneralpurposefnction

GPIO_0_Mode_EPWM1A,//!<DenotesaEPWM1Afunction

GPIO_0_Mode_Rsvd_2,//!<Denotesareservedfunction

GPIO_0_Mode_Rsvd_3,//!<Denotesareservedfunction2.5常量的定义在变量前加前缀“const”例:constintAge=18;2.6变量和常量的实质含义在计算机里,可以这么认为计算机由CPU+BUS+MEMORY构成。MEMORY=DATAM+PROGRAMMDATAM:变量;PROGRAMM:常量空间编址管理。不管变量还是常量其实是MEMORY空间中某一个具体空间的别名。2.7变量的声明变量的声明:extern数据类型变量名;例:externintNo;意义:告诉编译器,这个变量在别的地方已经定义过了。3数据处理的基本方法算术运算:+、-、*、/、()、%、++、--赋值运算:=关系运算:<、<=、>、>=、==、!=逻辑运算:&&、||、!按位运算:&、|、^求反运算:~移位运算:>>、<<4.程序流控制条件分支两路分支:if-else多路分支:elseif、switch循环语句:while、do-while、for开关语句:break、continue5.函数具有相对完整的功能块,封装起来,成为函数。定义和声明变量作用范围和生存期函数间通讯5.1函数的定义和声明定义格式:返回值类型函数名(形式参数列表){

函数体;

return返回值;}声明格式:返回值类型函数名(形式参数列表);5.2函数的调用格式:函数名(实际参数);5.3变量的作用范围和生存期全局变量局部变量静态变量:static嵌入式特有寄存器变量:volatile5.4函数间的通讯参数传递值传递地址传递变量6构造数据类型6.1数组类型6.2结构体类型:struct6.3联合体类型:union6.4枚举类型:enum6.2嵌入式C的结构体结构可以处理具有不同数据类型的一组数据;比如:学生成绩统计表,包含姓名(字符型)+学号(整形)+年龄(整形)+性别(字符型)+成绩(整形或浮点型)结构体使用指南:结构类型定义结构的声明结构的初始化结构的使用定义结构struct结构名structstudent{{

类型说明符成员名;charname[16];类型说明符成员名;intnum;

。。。intage;

}}注意:结构定义的最后一定要加分号“;”声明结构变量1、先定义结构,再声明结构变量struct结构名结构变量;

示例:structstudentxiaoming;2、定义结构时声明结构变量structstudent{charname[16];intnum;intage;}xiongming;3、直接声明结构变量(上例student可以去掉)

结构变量的初始化声明的同时进行初始化structstudent{charname[16];intnum;intage;}xiaoming={“xiaoming”,115,,23}动态初始化=“xiaoming”;xiaoming.num=115;结构指针结构指针是指该指针变量指向一个结构变量。结构指针变量中的值是所指向的结构变量的首地址定义结构指针structstudent*pstu使用结构指针pstu=&xiaoming;//指针赋值(*pstu).num=115;pstu->num=115;类型声明typedef原类型名新类型名;

参考GPIO指针。先定义结构体;typedefstruct_GPIO_Obj_{

。。。}GPIO_Obj;

定义结构体指针

typedefGPIO_Obj*GPIO_Handle;

GPIO_Handle为新定义的结构体指针类型

声明结构体指针GPIO_HandlemyGpio;//声明myGpio为结构体指针变量。是具有struct_GPIO_Obj_结构的结构体指针。

结构体指针变量的赋值结构体指针变量必须赋值后才能使用。

结构指针变量的赋值就是把结构变量的首地址赋予该结构指针变量

结构指针变量的赋值:myGpio=GPIO_init((void*)GPIO_BASE_ADDR,sizeof(GPIO_Obj));myGpio=(GPIO_Obj*)GPIO_BASE_ADDR;myGpio=(GPIO_Handle)GPIO_BASE_ADDR;myGpio=(GPIO_Handle)0x00006F80;myGpio=(void*)0x00006F80;结构指针的使用myGpio)->GPAMUX1=0x00000000;myGpio)->GPAMUX2=0x00000000;myGpio)->GPBMUX1=0x00000000;myGpio)->GPADIR=0xFFFFFFFF;myGpio)->GPBDIR=0x0000000F;6.3联合类型(union)

联合类型与结构类型的定义、声明、使用都一样;

区别:

数据存储不一样:联合变量的成员占用同一个内存空间;结构变量的成员分别独占自己的内存空间。6.4枚举类型(enum)枚举类型主要用于将变量的取值限定在一个有限的范围内的场合;

枚举类型在定义中列举出所有可能的取值

枚举成员的值依次加1枚举是一种基本数据类型。枚举变量的取值是有限的,枚举元素是常量,不是变量typedefenum

{

GPIO_PullUp_Enable=0,//!<Denotespullupwillbeenabled

GPIO_PullUp_Disable//!<Denotespullupwillbedisabled}GPIO_PullUp_e;7.指针指针的实质指针的运算指针变量定义指针变量的使用函数指针1、指针的实质

内存中每个单元都有个编号,就是“地址”

程序中定义的变量,系统编译时就会为这个变量分配内存单元;指针是一个特殊的变量,它里面存储的数值被解释为内存里的一个地址;

通过指针可以访问变量的地址;

通过指针可以访问数组和函数的首地址,用指针来操作数字和函数,可以使程序精炼、执行效率高。

指针的类型

指针所指向的类型

指针的值或指针所指向的内存区

指针本身所占据的内存区int*ptr;ptr=&a指针类型:int*指针所指向的类型:int指针的值:32位地址。变量a的地址。指针本身所占据的内存区:占据2个存储单元,即32位。

特殊的指针变量赋值------数组inta[7],*p;p=a;

或p=&a[0];

特殊的指针变量赋值----函数入口int(*pfun)();pfun=fun;//fun为已定义的函数名2、指针的运算

取地址运算符&&变量名

取值运算符*

*指针变量名

关系运算<>>=<===

若p==q为真,则表示p和q指向同一地址;

温馨提示

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

评论

0/150

提交评论