- 博客(7)
- 收藏
- 关注
原创 进程环境-C程序存储空间布局
这里都是unix环境高级编程书上的,所以描述的是Linux C内存分布,Window下具体分布要自己试验或查阅其他博客。 虚拟内存是4GB,0-3GB是用户态,3-4GB是内核态。内核态是不允许用户访问的。 从低地址往高地址一次时代码段,初始化数据段,未初始化数据段,堆,不明确的(好多博客说法不一,我也没有试验过),栈以及命令行参数和环境变量。命令行参数和环境变量是在内...
2018-05-26 23:20:47 177
原创 进程环境-命令行参数
上一篇博客说了启动例程会获取命令行参数和环境变量,然后传递给main函数并调用。现在看一下main的命令行参数和环境表。 命令行参数: 因为ISO C和POSIX标准都要求argv[argc]是一个空指针,所以我们main中可以通过空指针判断结束遍历。 argc,就是我们平常说的命令行参数传递的个数。argv,就是命令参数作...
2018-05-25 13:06:03 445
原创 进程环境-C程序的启动和终止
360面试回来了,结果是好的,面上了。技术面让我在校多补补多进程和多线程,所以开始看Unix环境高级编程,所以这里的都是看书的一个大致总结,很多都是书上的内容。 一:main如何被调用 1.内核执行C程序 2.调用启动例程,从内核获取命令行参数和环境变量 3.调用main 其实main之前的操作时很复杂的,栈和BSS的初始化,库...
2018-05-25 12:29:16 718
原创 仅用递归和栈操作逆序一个栈
题目: 一个栈依次压入1,2,3,4,5,那么栈顶到栈底依次是5,4,3,2,1。逆序后,栈顶到栈底依次是1,2,3,4,5。只能使用递归函数思路 两个递归函数 1.getAndRemoveLastElement(); 功能:将栈底元素删除并返回 2.reverseStack(); 功能:获取栈底元素并删除,栈为空的时...
2018-05-19 17:36:59 779
原创 用一个栈排序另一个栈
题目: 一个栈中的元素都是整型,现在想将改栈从栈顶到栈底从大到小排列,只允许申请一个栈,除此之外可以申请新的变量,但不能申请额外的数据结构。思路: 两个栈,一个记为stackData,一个记为stackSort。一个整型变量cur stackData弹栈到cur,判断stackSort是否为空 如果为空,将cur压栈到stackSort。如果不为空判断c...
2018-05-18 09:31:42 563
原创 两个栈实现队列
题目: 编写一个类,用两个栈实现队列,支持进队列,出队列,获取队列头元素思路: 使用两个栈,因为栈的特性是后进先出,两个栈正好把顺序反过来(stackPush,stackPop)注意: 1. 如果stackPush要往stackPop中压入数据,那么必须一次性把stackPush中全部元素压入,并且删除 2. 如果stackPop不为空,stackP...
2018-05-17 17:23:04 88
原创 最小值栈
题目: 实现一个特殊的栈,可以提供返回最小值的操作。要求: 1. push,pop和getMin时间复杂度都是O(1) 2. 设计的栈可以使用现成的栈结构思路: 使用两个栈,一个做数据栈,一个做最值栈。第一种方法: 不重复的保存最值第二种方法: 重复的保存最值代码:#include <exception&g...
2018-05-17 15:57:55 215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人