摘要: 程序中的栈: 函数调用过程: 函数调用栈的变化: 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) 编辑
摘要: 为什么C语言中的数组参数会退化为指针? 退化的意义: 二维数组参数: 等价关系: 知识点: 传递与访问二维数组示例: 53行传递的参数与形参类型不匹配,访问会出现意想不到的结果。55行也是类型不匹配。 注释掉53、55行,运行结果如下: 小结: 阅读全文
posted @ 2018-08-28 00:06 周伯通789 阅读(215) 评论(0) 推荐(0) 编辑