




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中程在线(北京)科技有限公司内部教程注意保密Android高級課程高級課程Android Native C 语言教学语言教学 C的起源的起源- 1970年代李查(D. Richie) 及汤普士(K. Thompson) 任职于美国贝尔实验室(Bell Labs) 。汤普士正设计Unix操作系统李查负责设计新语言来撰写Unix程序。新语言继承汤普士原设计的B 语言称为C 语言。-数学函数(Function)观念被应用到C语言中成为C程序的基本组件。例如sin()、cos()等。在C的编程时,可自行定义函数,如:f(x) = x * x就是一个函数括号内的x 为参数。如果x值为5 f(5) = 5
2、 * 5 = 25此时f(5)函数值是25。 C的基本结构的基本结构 1. 前置处理器前置处理器(Preprocessor):- 前置处理器的任务是在编译(Compile) 之前把原始程序先整合再交给编译程序(Compiler)处理。 C的特殊结构的特殊结构2.定义宏定义宏(Macro):-人有正名(本名)也有别名通常别名较亲切。程序内之常数或变量也能有涵意深刻之别名。令程序更有人情味更亲切。有了别名就可使用别名亦可用本名。前置处理器(Preprocessor)将别名转成正名才交由编译程序(Compiler)编译之。 常数的别名(如PI)通称为宏常数若别名中含有参数(Argument)就类似一
3、般函数通称为宏函数。 #define TRUE 1#define FALSE 0#define NewLine n char digit( char k ) return (k =0 & k =0 & k (y) ? (x) : (y) #define min(x, y) (x) 0 ? -(x) : (x) #define recip(x) (float)(x) = 1.0 / (float)(x) #define odd(x) (x) & 1 ? 1 : 0) #define even(x) (x) & 1 ? 0 : 1) 写C 程序时常用下述宏函数 ma
4、x(x,y) 拿两数相比挑出较大者。 min(x,y) 则挑出较小值。 square(x)求x 的平方。 cube(x) 求x 的立方。 abs(x) 求x 的绝对值。 recip(x) 求x 的倒数。 odd(x) 判断x 是否为奇数。 even(x) 判断x 是否为偶数。随时可引用上述宏创造更多宏。3. 取销宏:取销宏: - #define 用来定义宏常数和函数。#undef指示恰好跟#define 相反用来取销已定义之宏常数或函数。 int Add( int x ) return (x+x); #define Add(x) (x)+10)int main(void) int k = Ad
5、d(8); #undef Add int h = Add(8); printf( k=%d, h=%d, k, h ); return 0; 例如:含入标头档含入标头档(Header): -写程序时若想用这心爱宏有两种方法1. 把宏抄进把宏抄进C 程序程序(*.c) 中中。2. 把各宏归成宏文件把各宏归成宏文件让程序含入之让程序含入之。这档案通称为标头档 (Header File) /* Ex_macro.h */ #define TRUE 1 #define FALSE 0 #define CR r #define PI 3.1416 #define EOF (-1) #define Sig
6、n(x) (x) 0 ? FALSE: TRUE) #define Area(r) (r) * (r) * PI) #define AND & #define REAL float 例如:- 此宏文件之个名字为Ex_macro . h - 在C程序中利用 #include来含入标头档 /* Ex_macro.c */#include #include Ex_macro.hint main(void) /* */ 例如:#include是含入之意其要求前置处理器并入标头档之内容摆于 #include 指示的位置上。- 标头文件的好处是各程序(*.c) 共享标头文件内之的宏。写复杂程序时就
7、得熟练运用标头档了。可随时修改标头文件内之宏修改之后再重新编译各模块(Module)即行了。 4. 条件性定义:条件性定义:条件性定义(Conditional Definition)指示有#ifdef 宏 若已定义了此宏就留下#ifdef与#endif 间的指令否则删去之。#ifndef 宏 若未定义过此宏就留下#ifndef 与 #endif间的指令否则删去之。#endif 说明 #ifdef 及#ifndef 之范围。#undef 宏 #define 的相反动作解除定义。#else 可构成 #ifdef #else #endif结构或是 #ifndef #else #endif结构。 5.
8、 指针指针(Pointer):- 指针(Pointer)就是某个变量的地址(Address)也就是说,它用来指向该变量。- 有人说C 并不好学何以致之呢其来自于C 程序中充满着指针(Pointer) 观念而许多人认为指标很难缠。其实指标观念并不如想象中的麻烦只是有点不习惯罢了。 指针与数组指针与数组:-指针能指向数组内之任一元素。可藉指针来存取数组内之元素。-所以除了传统的数组存取方法之外还可利用更有效率的指针处理方法。#include int main(void) int data3; int *px, *py; data0 = 5; data1 = 28; data2 = 78; px =
9、 &data0; py = &data1; data2 += *px + (*py)+; printf(%d, %d, %dn, data0, data1, data2); return 0; 例如: px = &data0叫px指向元素data0。既然px指向data0就可用*px 来代替data0亦即可用*px 来存取data0 之内容。py = &data1令py指向data1 元素此时可用*py 代替data1用*py 存取data1 之内容。 6. 变量的储存种类:变量的储存种类:-在大家庭中每人都有自己的财产也有属于家庭的公家财产。在C 程序(犹如大
10、家庭)中每个函数有自己的变量也有属于整个程序的公家变量。私有财产属于个人别人无权使用同样地私有变量属于函数别的函数无权存取之。 根据使用权限变量可分为三类 自动(Automatic) 变量 隶属于一个函数别函数无权使用。2. 外部静态(External Static) 变量 隶属于一个原始程序文件(*.c)该档内的各 函数公用但别文件内的函数无权使用。3. 外部(External)变量 各函数公用。7. 结构结构(Struct):-结构能储存相关但不同型态之数据。例如 struct smile char sna; char size; float price; ;这说明了smile 结构内含3
11、 项数据两项字符数据另一项浮点数数据。 8. 动态内存分配:动态内存分配:malloc()及及 free()- 动态(Dynamic) 的意思是待程序执行时(Run-Time)才告诉计算机共需要多少内存空间计算机依照需要立即分配空间裨储存数据。这种空间又称为动态数组(Dynamic Array)。传统数组的优点是简单易用其弱点是缺乏弹性动态内存分配的方法恰补足此项弱点。 。 - malloc()和free()是最常用的动态内存分配函数。如果在执行时需要空间来储存数据宜使用malloc()函数。- 例如 ptr = malloc(100); 这个指令要求计算机分配100 bytes 空间。mal
12、loc()函数会传回该空间的地址且存入ptr 内于是ptr 指向该空间。就可藉ptr 指标来存取此空间的数据了。 9.列举型态:列举型态:-列举型态(Enumerated Data Type)是一堆常数的集合这些常数称为列举常数(Enumerated Constants)。例如朴克牌有club、diamond 、heart 及spade 四种牌任意抽出一张必定是上述4 者之1。此时可定义列举型态表达上述4 种数据 enum 朴克牌 club, diamond, heart, spade ;enum week_day monday, tuesday, wednesday, thursday, friday, saturday, sunday ; 例如- enum week_day 列举型态内含monday、tuesday 、sunday共7 个常数计算机分别以0 、1 、6 代表这7 个列举常数。列举型态把相关常数组成一个集合计算机把列举常数逐一编号。程序里可尽情地使用列举常数名称(如monday)裨增加程序的可读性。 。 因之 enum week_day 列举型态 相当于: #define monday 0 #define tuesday 1 #define wednesdy 2 . #define sunday 6 10. typedef 指指示示:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江横店影视职业学院《天然药物化学》2023-2024学年第二学期期末试卷
- 抚州幼儿师范高等专科学校《粮油加工概论》2023-2024学年第二学期期末试卷
- 河北大学工商学院《中国画人物》2023-2024学年第二学期期末试卷
- 广西艺术学院《医学细胞生物学A》2023-2024学年第二学期期末试卷
- 洛阳文化旅游职业学院《舞龙舞狮》2023-2024学年第二学期期末试卷
- 宁夏建设职业技术学院《电力企业管理》2023-2024学年第二学期期末试卷
- 云南锡业职业技术学院《外出写生(3)》2023-2024学年第二学期期末试卷
- 四川美术学院《大学物理上》2023-2024学年第二学期期末试卷
- 喀什职业技术学院《大数据应用实训》2023-2024学年第二学期期末试卷
- 贵州黔南科技学院《近现代艺术思潮》2023-2024学年第二学期期末试卷
- DB43-T 2425.2-2022 学生公寓床上用品 第2部分:芯类产品技术要求
- PRP治疗膝骨性关节炎临床应用
- 2024年河南省现场流行病学调查职业技能竞赛理论考试题库-上(单选题部分)
- 2025年国家开放大学《形势与政策大作业》试题与答案《形势与政策》形成性考试专题检测及大作业答案
- 浙江省金华市卓越联盟2024-2025学年高一下学期5月月考政治试题(含解析)
- 拱墅区长庆街道招聘工作人员笔试真题2024
- 无人机导航与定位试题及答案
- 《颈部肌肉与背部肌肉》课件
- 《继电器原理及其应用》课件
- 2025年浙江中考语文二轮复习热点题型专练:对联(原卷版)
- 中医药师承考试卷及答案
评论
0/150
提交评论