c语言学习笔记

发布 2021-05-12 01:42:28 阅读 7344

网络通讯中数据大小端的问题:

小端模式:低位字节放在内存的低地址端,即该值的起始地址;高位字节放在内存的高地址端。

数组的名字是一个常量指针,如x【2】,x是一个常量指针,没有分配的内存。

数据存在存储空间,数值不存在。

在c语言里,指针可以访问到任何地方,但是对不应该访问的地址进行访问没有意义,也可能会禁止读写。

函数的接口类型,可变参数的类型和执行跳**

c语言的函数名可以看做一个地址常量(和数组一样)。

系统的堆栈:堆和栈的第一个区别就是申请方式不同:栈(英文名称是stack)是系统自动分配空间的,例如我们定义一个 char a;系统会自动在栈上为其开辟空间。

而堆(英文名称是heap)则是程序员根据需要自己申请的空间,例如malloc(10);开辟十个字节的空间。由于栈上的空间是自动分配自动**的,所以栈上的数据的生存周期只是在函数的运行过程中,运行后就释放掉,不可以再访问。而堆上的数据只要程序员不释放空间,就一直可以访问到,不过缺点是一旦忘记释放会造成内存泄露。

、预处理操作:

宏定义:#define m 3; #define m(x,y) 2*x+y;

预处理对宏的处理,分为3类:

预处理“标识符”的展开;

预处理“标识符”的判断;

预处理“标识符”的文本替换。#if 0

#endif

用作**注释。

基础类型重定义:一个c程序在pc上开发,逻辑验证正确后,下需要移植到某个嵌入式系统中,但是它们对应的int的位宽定义不同,目标系统是x86时,编译器将其看做32位,而目标系统为嵌入式系统的时候,编译器将其看作16位(对应的32位为long关键词)。

这种情况,就需要进行基础类型的重定义:

#define _target_x86_sysytem 0

#define _target_dev_sysytem 1

#define _target_sysytem _target_x86_sysytem

#if(_target_sysytem = target_x86_sysytem)

typedef signed int _i32

typedef unsigned int _u32

#elif(_target_sysytem = target_dev_sysytem)

typedef signed long _i32

typedef unsigned long _u32

#enif这样,就只需要对_target_sysytem重新修改就可以完成程序**中32位宽的整型的定义。

c语言编程规范:

1. 流程控制语句必须用大括号包含起来,if、for、do、while、case、switch、default 等语句自占一行,且 if、for、do、while 等语句的执行语句无论多少行都要加大括号 {}

2. 不要使用难懂的技巧性很高的语句,除非很有必要时。高技巧语句不等于高效率的程序,实际上程序的效率关键在于算法。

3. 去掉没有必要的公共变量。

4. 仔细定义并明确公共变量的含义、作用、取值范围及公共变量。

5. 明确公共变量与操作此公共变量的函数数或过程的关系,如访问、修改及创建等。

6. 当向公共变量传递数据时,要十分小心,防止赋予不合理的值或越界等现象发生。

7. 防止局部变量与公共变量同名。

8. 严禁使用未经初始化的变量作为右值。

9. 构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只访问的公共变量,防止多个不同模块或函数都可以修改、创建同一公共变量。

10. 使用严格形式定义的、可移植的数据类型,尽量不要使用与具体硬件或软件环境关系密切的变量。

11. 结构的功能要单一,是针对一种事务的抽象。

12. 不要设计面面俱到、非常灵活的数据结构。

13. 不同结构间的关系不要过于复杂。

14. 结构中元素的个数应适中。若结构中元素个数过多可靠率依据某种原则把元素组成不同的子结构,以减少原结构中元素的个数。

15. 仔细设计结构中元素的布局与排列顺序,是结构容易理解、节省占用空间,并减少引起误用现象。

16. 结构的设计要尽量考虑向前兼容和以后的版本升级,并为某些未来可能的应用保留余地。

17. 留心具体语言及编译器处理不同数据类型的原则及有关细节。

18. 编程时,要注意数据类型的强制转化。

19. 对编译系统默认的数据类型转化,也要有充分的认识。

20. 尽量减少没有必要的数据类型默认转换与强制转换。

21. 合理地设计数据并使用自定义数据类型,避免数据间进行不必要的类型转化。

22. 对自定义数据类型进行恰当命名,使它成为自描述性的,以提高**可读性。注意命名方式在同一项目中的统一性。

23. 当声明用于分布式环境或不同 cpu 间通信环境的数据结构时,必须考虑机器的字节顺序、使用的位域及字节对齐等问题。

24. 一个函数仅完成一个功能。

25. 为简单功能编写函数。

26. 不要设计多用途而面面俱到的函数。

27. 尽量不要编写依赖其它函数内部实现的函数。

c语言学习笔记

一元二次方程详解。不管我们写什么样的程序,首先要建起构架。c语言的构架是 include intmain void 我们首先需要把三个系数保存到电脑里面,怎么保存呢?我们会以变量的形式保存到电脑里面。比如说 inta 1 intb 2 intc 3 这个 的意思是赋值的意思,不是相等的意思。什么叫变...

C语言学习笔记

a.1.需要成对敲入的符号。2.文件名不要出现。号,否则无法生成。c或。cpp文件,所以不能编译和运行。3.分号 代表一个语句,只有一个 的语句是空语句,所以下面的 不会报错,但表示若条件成立只执行空语句,并且条件语句结束 if a b 等价于 if a b 空语句。4.格式化输出中,建议用 x输出...

C语言学习笔记

求余 求mod 运算符。变量命名规则 只能以字母数字下划线三种字符组成,且第一个字符必须为字母或下划线。scanf d a prindf d a c语言中,变量名是区分大小写的。int 范围 32768 32768 float的指数部分有8bit 2 8 由于是有符号型,所以得到对应的指数范围 12...