c语言编程基础培训x

c语言编程基础培训x

ID:39963472

大小:217.92 KB

页数:34页

时间:2019-07-16

c语言编程基础培训x_第1页
c语言编程基础培训x_第2页
c语言编程基础培训x_第3页
c语言编程基础培训x_第4页
c语言编程基础培训x_第5页
资源描述:

《c语言编程基础培训x》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言编程基础培训v0.1应用研究课题组目录1.简单就是美2.sizeof3.字节序4.函数参数5.返回值6.强制类型转换7.swithcase8.字符串9.资源释放10.if规范11.临界资源保护1.简单就是美优先级搞不清楚用括号复合语句太罗嗦,拆成几行来写编码的三不原则不要挑战自己的记性不要挑战自己的耐心不要挑战编译器的水平编码的三用原则能用简单语句,就不要用复杂的技巧能用成熟代码的,就不要再来一套能用上工具的,就一定要机械化2.sizeof数据结构是C语言的基础。C语言的灵活性很大,程度上在

2、于其数据结构的灵活性。要用好的数据结构,首先要掌握数据结构的大小的计算,系统的每个数据机构,每个变量都会分配到一个对应的存储空间,这个存储空间的大小就是数据结构的尺寸。sizeof为编译时的一元运算符,可用来计算任一对象的大小sizeof的结果是编译时的常量sizeof不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型。如未知存储大小的数组类型,未知内容的结构或联合类型,void类型等。3.字节序X86系统voidQosConfigPolicy(xxx){ulDestIP

3、=从命令行读取用户配置的参数;pQosPoliscy->ulDestIP=ulDestIP;return;}主机处理voidQosClassify(xxx){plp=(IP_S*)pData;if(pQosPolicy->ulDestIP==plp->ulDestIP){VOS_HTONL(pQosPolicy->ulDestIP);DoSomething();}Return;}3.字节序由于历史的原因,世界上存在两种字节序标准BigEndian和LittleEndian。PowerPC是大端,X

4、86是小端。有些CPU可以通过寄存器设置支持不同的字节序。如MIPS。BigEndian——高位在低字节,地位在高字节LittleEndian——低位在低字节,高位在高字节e.g.0x345678大端内存从低到高存放次序00,34,56,78;小端内存从低到高存放次序78,56,34,003.字节序为了解决不同字节序的处理单元之间的通信问题,世界上定义了主机序和网络序的概念,网络序主要用于信息传递,一般不用于计算,其字节顺序与大头一致。除在编码时紧绷这根弦之外,我们在器件选择时选择主机序与网络序一

5、致的芯片,同一设备的不同单板使用相同的字节序。并优先选择支持大头的芯片,这样即使不能彻底解决问题,也可以彻底规避问题。4.函数参数C语言中,函数通过返回值和参数与调用者交换信息。函数参数自身占用的存储单元在堆栈中分配。入口参数指向的数组或地址,在函数入口处拷贝到堆栈区中,因此对函数参数所在存储单元的直接修改不会作用到函数之外,对参数存储单元中存放的地址指向的存储空间的修改,则会在函数之外起作用。调用者在进行函数调用之前,必须事先声明被调用函数的原型,包括返回值类型和参数类型。4.函数参数CHAR*

6、GetMemory(CHAR*p){/*申请内存*/p=(CHAR*)malloc(100);returnp;}/*malloc申请的内存空间与操作系统有关,在PC中malloc申请空间以byte为单位,如申请100个int内存则p=(INT*)malloc(400);*/VOIDTest(void){CHAR*str=NULL;if(NULL!=GetMemory(str)){strcpy(str,“hellworld”);printf(str);return;}}5.返回值C语言中,函数的调用

7、者通过返回值了解函数的执行情况,函数缺省的返回值类型为int,编程规范要求必须显示定义函数的返回类型。对于反映了函数执行状态的返回值,调用者必须依据返回值进行相应的处理,尤其是对于函数执行异常的情形。函数的出口参数能够起到与返回值类似的作用,上一条同样适用于出口参数。对于函数返回值为恒值的函数,建议使用void返回值5.返回值main函数的返回值是int,main函数有以下两种形式(C99):int main(void) int main(int argc,char* argv[])(参考资料:I

8、SO/IEC9899:1999(E)Programminglanguages—C5.1.2.2.1Programstartup)Thedefinitionvoidmain(){/*...*/}isnotandneverhasbeenC++,norhasitevenbeenC.——C++之父BjarneStroustrup6.强制类型转换强制类型转换给C编程带来了极大灵活性,也正是这种灵活性,埋下了无数隐患。当目的结构的空间大于源结构的空间时,要重点关注内存访问超过源结构范围的情况,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。