上一页 1 ··· 37 38 39 40 41 42 43 44 45 ··· 56 下一页
摘要: 参数入栈顺序: 调用约定: gcc语言默认使用__cdecl调用约定。调用约定不是语言的一部分,是编译器的一部分。 调用约定使用的最典型的地方就是库函数的调用。因为库的编译方式我们的自己的程序的编译方式可能不一样。 小问题: 如何编写一个计算n个数平均值的函数? 示例程序: 这里我们求平均值的时候还 阅读全文
posted @ 2018-08-30 21:54 周伯通789 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 函数参数: 函数参数的求值顺序依赖于编译器的实现: 第一感觉,这个函数会输出1和2,k的最终值会变成3。 示例程序: 运行结果如下: 这与我们的预期是不符的,这是为什么呢? 因为函数参数的求值顺序是和编译器相关的,并没有规定第一个k++先求职,第二个k++后求职。只是规定了参数的值必须求出来之后才进 阅读全文
posted @ 2018-08-30 00:03 周伯通789 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 函数的由来: 模块化程序设计: C语言中的模块化: 面向过程的程序设计: 函数的声明和定义: 声明和定义是不同的。示例如下: global.c如下: 第4行说明g_var在其它文件中定义,在这里不会再分配存储空间。第6行声明有struct Test这样一个结构体(并不是声明变量),这里是告诉编译器在 阅读全文
posted @ 2018-08-29 23:23 周伯通789 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 常见内存错误: 两次释放同一个指针是有问题的。 示例: 13行和41行两次释放了p,会导致程序崩溃。21行如果是奇数直接返回,也会导致问题。 运行如下: 在哪个函数申请的内存就在哪个函数释放。 free不能释放栈上的空间,否则产生段错误。 示例程序: 11、12定义结构体变量时,内部的指针没有初始化 阅读全文
posted @ 2018-08-29 22:46 周伯通789 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 野指针: 野指针的由来: 示例程序: 第13行越界之后就相当于操作野指针了。第8行将随意一个地址转换为指针,也相当于野指针。 运行结果如下: 基本原则: 示例: 第15行返回局部字符数组,是不正确的。结构体s中的name没有初始化,s.name和p都是野指针。 34-36行的内存拷贝也会产生越界。和 阅读全文
posted @ 2018-08-29 22:21 周伯通789 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 程序文件的一般布局: 加载程序加载文件时,根据文件头信息就可以知道这是一个什么样的文件。知道了是什么样的可执行程序就知道怎么运行它了。 程序与进程: 面试中的小问题: 包含脚本代码的文本文件是一种类型的可执行程序吗?如果是,对应什么样的进程呢? 脚本代码是可执行程序,但不是直接的可执行程序,是解释执 阅读全文
posted @ 2018-08-29 21:50 周伯通789 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 程序中的栈: 函数调用过程: 函数调用栈的变化: ebp的作用就是用来进行函数调用的返回的。 函数返回仅仅是修改了esp指针,栈中的数据不会立即改变。 函数调用栈上的数据: g返回后,a数组的数据已经没有意义了。 示例: g返回后,a中的数据就会改变了,示例如下; 第23行调用printf时已经将栈 阅读全文
posted @ 2018-08-28 23:30 周伯通789 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 动态内存分配的意义: malloc和free: 注意: 思考: malloc(0)将返回什么? 运行结果如下: 可以看到,返回了具体的地址。 我们所说的内存包括起始地址和长度。我们平时说内存的时候更多的是关注起始地址,而忽略了长度。 如果动态的综合这两部,我们使用malloc(0)返回了一个地址就不 阅读全文
posted @ 2018-08-28 22:29 周伯通789 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 问题: 指针阅读技巧解析: 示例: 解析如下: 最后一个指针p5用typedef定义如下: 工程中复杂指针尽量用typedef定义。 小结: 阅读全文
posted @ 2018-08-28 22:09 周伯通789 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 函数类型: 函数指针: 面试小问题: 如何使用C语言直接跳转到某个固定的地址开始执行? 函数指针的使用: 函数名取不取地址,它的意义是相同的,这和数组不一样。 运行结果如下: 知道了函数地址,我们在18行直接给函数名用地址赋值,结果如下: 我们可以得到结论,C语言中可以直接跳转到某个固定的地址执行。 阅读全文
posted @ 2018-08-28 21:50 周伯通789 阅读(222) 评论(0) 推荐(0) 编辑
上一页 1 ··· 37 38 39 40 41 42 43 44 45 ··· 56 下一页