无论学习哪一种语言,在脑海中一定要有内存模型的概念,了解内存的管理机制。因为我们所有的代码都是在内存中运行的。
变量即是内存单元。指针即是存储地址。指针能够接受地址。
指针和数组属于地址类型数据。
平时编程序时就应该养成加入断言的习惯,以便于调试程序。
理解重要类和函数的内部机制。
CPU以字节为单位编址,而C语言指针以指向的数据类型长度作自增和自减
malloc和free成对出现的原则,即"谁申请,就由谁释放"原则
C语言中函数名直接对应于函数生成的指令代码在内存中的地址,因此函数名可以直接赋给指向函数的指针;
调用函数实际上等同于"调转指令+参数传递处理+回归位置入栈",本质上最核心的操作是将函数生成的目标代码的首地址赋给CPU的PC寄存器;
因为函数调用的本质是跳转到某一个地址单元的code去执行,所以可以"调用"一个根本就不存在的函数实体
如果指针不熟练的话,尽可能的选用数组,数组不能越界访问(真理越过一步就是谬误,数组越过界限就光荣地成全了一个混乱的嵌入式系统);
如果使用动态申请,则申请后一定要判断是否申请成功了,并且malloc和free应成对出现!
如果形参的数据类型是指针或者数组等地址类型时,这时实参和形参之间传递的不是普通数据而是地址,这种传递方式成为传址方式。这种方式常用于函数需要带出一个以上返回值时。
设计良好的软件架构,做到代码"一次编写,多次复用"
思考的前提必须是完整的事实表象,思考的过程必须是抛弃成见的问题跟踪。在发现事实之前作太多的主观思考和臆断,倒不如把自己当作白痴一样来行动更好。
对语言细节来说,遵循一种理念,那就是:学到哪,用到哪。
真正的编程能力是与语言细节没关系的
正确的态度是,细节是必要的。但细节是次要的