c语言除疑系列讲座笔记
来源:互联网 发布:淘宝上好看的男鞋店 编辑:程序博客网 时间:2024/05/17 02:45
1.注意函数的封装,尤其是参数的设计。
2.库属于第三方代码,需要包含头文件,在链接的时候会通过环境变量找到lib.o文件并包含进去。
3.尽量避免系统调用:即软硬件之间的切换。
4.main函数也是一个函数,只不过在编译的时候做了特殊的处理。
5.函数的名字就相当于是一个地址,相似的是汇编里的lable标号。
6.内存的使用:全局变量是在编译的时候就分配了。(这个有点难以理解)函数中的变量时在栈中分配的(因此函数调用结束的时候会自己消除)。而new等的动态奉陪是在堆上分配的。
7.parameter和argument的区别,一个是形式参数,一个是实参
8.函数返回的时候不仅会返回值,并且会隐含的返回一个地址,即汇编中的call ,和ret。返回到调用它的代码段中
9.函数参数的入栈顺序一般是从右向左,一般是。使用的时候就pop
10.栈是从高地址向低地址使用,而堆是从低地址向高地址使用(从两边到中间)
11.程序在内存中的存放顺寻:从低地址——》高地址为:
code 全局变量,常量。 堆: 栈 (大概如此,从汇编很好理解)
12. 调用一个函数的时候call会先将函数的地址push到栈中,以使用ret返回,然后修改eip(instruction pointer)指令指针。
13.函数返回值放在eax中,消除被调用函数的stackframe。pop esp
14.值传递:哪怕是指针,它也是值传递,只不过是相对于指针本身是值传递,但是指针指向的值是可以改变的。
15.int * & p;从右向左看,首先他是一个引用,然后是一个指针的引用,然后是一个int型的指针的引用。明白了
16.int func(int array[5]);在编译的时候当成是一个数组,或者一个整形指针,但不进行检查有多少个,可以传递三个的数组,当使用array[5]的时候会造成内存的禁止访问,但当参数为int (&a)[5]的时候会强制要求是5的长度的。()不能少。
17.数组参数传递时会退化成一个指针。一个指针的长度一般为4Bytes。
18.32位机器的虚拟内存为4G。即程序使用的时候都认为自己拥有4G的空间。
19.程序放到内存中的时候,在高地址处的首部会有:程序名,环境变量,控制台参数
20.内存中的每个程序都见到自己的地址为0X08048000~0Xffffffff。但在物理内存中不一定了就,所以需要之间有一个转换工具,硬件实现。
(未完待续)
- c语言除疑系列讲座笔记
- c#语言系列讲座(14) 结 构
- C#.NET编程系列讲座
- C语言系列学习笔记
- C#语言系列讲座(9)委派
- C#语言系列讲座(6) 方法
- C#语言系列讲座(12) 数组
- C#语言系列讲座(13)-字符串
- VC++ 2005 (C++/CLI) 系列Web讲座
- 笔记 微软亚研院大数据系列讲座 一
- C语言笔记系列(一)--概述
- C语言笔记系列(二)--基本数据类型
- C语言笔记系列(六)--指针
- C语言笔记系列(七)--存储类
- 如何学习C语言讲座稿
- 如何学习C语言(4)-----讲座稿
- C语言除0引发的思考
- 自学c语言第二个/除
- SADADA
- windbg 命令
- JProfiler eclipse 整合配置
- TextEdit
- 英语培训笔记
- c语言除疑系列讲座笔记
- windbg 命令
- How to convert wchar_t* to char*
- ORACLE的性能优良的SQL
- 解析Linux静态与动态链接库的创建和使用
- 统计排序
- 英语绕口令
- windbg 命令
- 动态规划例子