




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1028 C语言笔记冯诺依曼程序=算法+数据结构。1. 程序机器可执行代码:预处理(执行#开头的指令,通常Preprocessor整合于编译器)、编译(compiler 把程序翻译成机器目标代码O,但还不可以运行)、链接(linker整合目标代码和附加代码,如库函数printf函数,此时最终可执行)。2. 主函数:执行程序时系统会自动调用唯一的main函数,C语言区分字母大小写,不要写成MAIN。建议main函数末尾用一条return语句结束(否则某些编译器示警,返回的值是状态码,在某些操作系统中程序终止时可以检测到状态码),向操作系统返回0表示程序正常终止(任意终止程序状态则可调用exit函数)。3./*注释开始 *良好的注释风格有:文件名,功能,作者,日期。下面为注释结束符。 *有些注释使用C+中的/简化,但这不符合C标准,而且不同于各编译器,可移植性差。 */ #include stdio.h /* 双引号告诉compiler先当前目录搜索需要包含的文件,再从指定的系统头文件目录下搜索 */ main( ) /* 翼型注释,自动调用唯一的main函数 */ /* 可以使大括号独立一行,并且缩进与 main 同齐*/ int height; /* main函数中的变量等声明必须放在程序语句之前,并建议以空白行隔开 */ printf(n); /* 缩进可用3个”空格“;注意各编译器Tab键占符不一,如8个、4个,故不宜用之*/ return 0; 4. 对实体标识符命名中,可以含有字母、数字和下划线,但数字不能开头。C语言区分大小写。标识符常小写,并命名中间插以“_”。运算符前后可添加空格,以突显之。#definePI 3.1415926 /* #为命令行,无需”;“,常量可以字母大写 */ #define EDIS asm( EDIS)typedef unsigned int Uint16;typedefdouble Dollars; /*类型定义方便程序移植于不同编译平台,可以首字母大写;有时类型定义比宏定义更强大 */ 5. C标准仅对各整型数规定了最小允许范围,char8,short16,int8,long32。小端(小印第安序)低址存地位。默认情况下,简单数据类型都是signed,除char依编译器机器字符集而定。进行算术运算时,float型变量通常比int型变量慢,而且更占存储空间;float型变量 所存数值往往只是实际数值的一个近似值,有舍入误差。双精度浮动的小数点数据double,为浮点常量默认存储形式。人为转换可0377L(为八进制长整型处理,或l),15U(无符号常量处理,或u),57.0e0f( 或F有小数和指数部分 ) 。6. 运算符/和%用于负的操作数时,其结果与具体实现有关如-9/5可能为-1或-2。 -9%5可能为2 或-2。注意5.0/9.0 不等于 5/9的取整。赋值= 指针 为右向左 结合。+i意味着”立即自增i”,而常用的i+为 下条语句前i才将自增。例如,i=1; printf(i is %dn, i+); /* 输出i为1*/ printf(i is %dn, i ); /* 输出i为2*/又如,i=1; printf(i is %dn, +i); /* 输出i为2*/ printf(i is %dn, i ); /* 输出i为2*/7. if级联:可有 复合语句; 。if (表达式) 语句;else if (表达式) 语句;又有 return (ij ? i : j ) ; 可不加括号,又如 return (i+j)/2 ;还有switch语句 往往比级联式if语句更易阅读,且执行速度快。循环中,可有初始表达式 for(sum = 0.0 , i = 1;i =N; i +) sum += i;逗号运算符允许将多个表达式“黏贴”在一起构成单独的一个表达式。类似于复合句把;多语句当做是唯一一条语句的作用。8. C语言有有两种聚合类型:array、structure结构记录。C语言不要求检查下标的范围,当下标超出范围时,程序执行将不可预知。数组初始化式完全为空是非法的。至少有:inta3 = 0;数组定义中,有不可修改的常量数组: const inta = 1, 2, 4; mi , j等同于逗号运算后的 m j 。对于多维数组是按照行主序存储数组的。对数组a的清零方法有:for (i = 0; i *b? a : b; /*函数返回指向两整数中较大数的指针,调用时可以 p = max(&x , &y); */在一些计算机上,指针可能是“偏移量”而不完全是地址。数组元素之和:for(sum=0.0 ,p = &a0; p (y) ? (x) : (y)后面的程序: i = MAX(a , b) ;*programa指令为要求编译器执行某些特殊操作提供一种方法。0. 存储位置(普通内存 、运行时的堆栈、CPU内部的通用寄存器);作用域(声明处的程序块如if,函数内,C文件内,C文件外)具有自动存储期限的变量没有默认的初始值,不能预测;具有静态存储期限的变量默认情况下的值为0,浮点变量为0.0,而指针初始化为空指针。1. 在局部自动数组中开设大数组如8K字节时,是需要仔细评估的,程序员必须非常清楚自己的堆栈空间是否够用。安全起见可以采用“static char buf8*1024”的方法定义。注意:当buf数组变量是通过堆栈或CPU内部寄存器自动存放时,将其地址作为指针传递到函数外部是非常危险的或是没有意义的。2. 当为申请内存块而调用内存分配函数(malloc、calloc、realloc)时,由于函数无法知道计划存储在内存块中的数据是啥类型,函数会返回void *型的值,它是“通用”指针,本质是内存地址。当调用内存块分配函数时,无法定位满足我们需要的足够大的内存块,函数会返回空指针null pointer,指向为空类型。mallac()库函数返回值是一个指向void类型的指针,因此好的编程风格是在将这个返回值被赋给其他类型的指针变量前进行显式的强制类型转换(不同于编译器的自动隐性类型转换)。如,p=(char*)mallac(1024)。中函数可把数组b复制给数组b:memcpy(a , b , sizeof(a);3. 避免内存泄露,以免内存空间无法释放回系统堆(heap)。4.void体现了一种抽象(无类型),有3个用途:修饰函数没有返回值(若不写函数的返回值类型,默认为随机的int型返回值); 声明函数没有入口参数; 声明空类型指针void*,其不指向任何类型的数据,仅表示一个内存地址,其引入实际上是为了程序编写的方便,在需要时再对指针进行强制类型转换。5. 凡是在函数外声明的变量都是全局变量(编译于普通内存,并静态运行。默认作用域仅为该C文件中,除非extern重声明使之作用域外,extern外部函数或变量可编写于头文件中易于简单调用)。如,DSP28_GlobalPrototypes.h 函数原型头文件中有:extern void InitSpi(void);extern void InitSysCtrl(void); 6.static关键词(声明处静态,便于模块化设计),3大用途:函数内部局部变量声明,从自动存储期限变为静态变量,编译时已分配于永久静态地址空间,但作用域不变,仍为该函数内部; 用于函数的定义时,该函数只能用于定义该函数的C文件中引用; 在用于全局变量的声明时,作用域局限于C文件内。7. struct结构变量 之 位域,节省存储空间并便于处理,字节中顺序分出二进制位段存区:/ 此为Dsp的常用注释方法,High speed peripheral clock register bit definitions:structHISPCP_BITS / bits description Uint16 HSPCLK:3; / 2:0 Rate relative to SYSCLKOUT Uint16 rsvd1:13; / 15:3 reserved;unionHISPCP_REG Uint16 all;structHISPCP_BITS bit;而联合变量的所有成员共享同一片存储区,某时刻只能保存它的某一个成员的值。8. volatile 定义的变量,可能会被意想不到的被改变,这样编译器就不会去假设这个变量的值了,即优化器会慎用之。如,用于一个中断服务子程序中会访问到的非自动变量,多线程应用中被几个任务共享的变量,并行设备的硬件寄存器(如状态寄存器)。extern cregistervolatileunsigned int IFR;C语言中没有真正意义的常量概念,如const修饰为只读变量,#define 预处理时已成立即数。9.指针
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中职寝室管理制度
- 中药留样管理制度
- 中药贵细管理制度
- 中试场地管理制度
- 临床样品管理制度
- 临时休息管理制度
- 临时摆卖管理制度
- 临时薪酬管理制度
- 事务车辆管理制度
- 基于大概念的初中生物学教学设计与实施研究
- GH/T 1093-2014再生资源回收利用网络规范
- 培养学生核心素养导向下的课堂教学课件
- 广西壮族自治区工程造价综合定额答疑汇编2022年11月更新
- 食品供应不合格产品退换方案
- 年产12000吨水合肼(100%)项目环评报告书
- 《有机波谱分析》期末考试试卷及参考答案
- 最详细的整车开发流程
- 部编版七年级历史(下)材料论述题专项训练
- 年产1000吨乳酸的生产工艺设计
- 博克服装CAD制版说明操作手册(共95页)
- 光电效应测普朗克常数-实验报告
评论
0/150
提交评论