在定义可变參数的函数之前,先来理解一下函数參数的传递原理:1、函数參数是以栈这样的数据结构来存取的,在函数參数列表中,从右至左依次入栈。2、參数的内存存放格式:參数的内存地址存放在内存的堆栈段中,在运行函数的时候,从最后一个(最右边)參数開始入栈。因此栈底高地址,栈顶低地址,举个样例说明一下:voi...
分类:
编程语言 时间:
2015-02-28 20:08:41
阅读次数:
182
这题也不难,模拟一下栈,若搜到字符为+-则弹出栈顶,若搜到字符为*/且不为+-则弹出栈顶,然后把搜到的操作字符压入栈顶,字母就输出。#include#includechar s[500],symbol[500];int num[500],i,j,t,r;int main(){ int t; ...
分类:
其他好文 时间:
2015-02-22 20:37:47
阅读次数:
174
深搜算法对于程序员来讲是必会的基础,不仅要会,更要熟练。ACM竞赛中,深搜也牢牢占据着很重要的一部分。本文用显式栈(非递归)实现了图的深度优先遍历,希望大家可以相互学习。 栈实现的基本思路是将一个节点所有未被访问的“邻居”(即“一层邻居节点”)踹入栈中“待用”,然后围绕顶部节点猛攻,每个节点被...
分类:
编程语言 时间:
2015-02-20 15:15:42
阅读次数:
247
今天学习了uC/OS II的任务切换,知道要实现任务的切换,要将原先任务的寄存器压入任务堆栈,再将新任务中任务堆栈的寄存器内容弹出到CPU的寄存器,其中的CS、IP寄存器没有出栈和入栈指令,所以只能引发一次中断,自动将CS、IP寄存器压入堆栈,再利用中断返回,将新任务的任务断点指针弹出到CPU的C....
分类:
其他好文 时间:
2015-02-14 14:56:02
阅读次数:
351
思路:
大概思路就是将后面的一半结点以倒序的方式依次插到前面一半的每一个结点的后面,考虑到后面一半的结点要倒序插入所以会用到栈。
1.求出链表的长度
2.将后边的结点依次入栈
3.将栈里的元素依次插入到前面的结点后面...
分类:
其他好文 时间:
2015-02-07 15:58:54
阅读次数:
135
CALL是什么?
CALL是汇编中的一个指令,CPU执行这条指令会执行2个动作
一:压入EIP入栈 二:跳转到后面的地址. 跟RETN指令配合就实现了汇编中子程序的作用,通常我们常说的写CALL就是 调用游戏中已经存在的功能子程序.
比如说
viod myadd (int a, int b)
{
int c=a+b;
}
这是一个简单的子程序,当我们用程序语言调用那...
分类:
其他好文 时间:
2015-02-05 16:24:33
阅读次数:
338
C语言 可变参数堆栈一般是怎么压栈处理的/**stackspace:**参数3|up*参数2|*参数1vdown*/ 因为参数是按照从右向左依次压入的,所以后面参数的地址依次根据“%”处理即可。文章中start=(int*)&buffer即获取了最后入栈的参数地址(如果最后一个入栈参数为int类型,...
分类:
编程语言 时间:
2015-02-03 12:38:31
阅读次数:
168
#definechSTR2(x) #x这个是串化,chSTR2(1+1==2)替换成"1+1==2"其他的都是M$的扩展,不需要搞明白..#pragmawarning(push,3)//3级警告设置入栈#pragmawarning(pop)//警告设置出栈#pragmawarning(push,4)...
分类:
其他好文 时间:
2015-02-02 19:37:45
阅读次数:
169
//1.初始化:(有头结点的情况下)
S=(LStack*)malloc(sizeof(LStack));//为栈开辟内存空间
S.next=NULL;//把栈置为空
//2.入栈
p=(LStack*)malloc(sizeof(Lstack));//给入栈的元素分配内存空间
p->data=e;//把元素e插入栈内
p->next=S->next;//使得e成为了栈顶元素
S->next=p;...
分类:
其他好文 时间:
2015-01-30 22:48:45
阅读次数:
213
一 概念
iOS在程序在运行的过程中,会创建很多个释放池,自动释放池以栈的形式存放的(先进后出)。
对象调用autorelease时,会被放入栈顶的自动释放池中。
当自动释放池销毁时,会对池的所有对象发送一次release消息;
所以发送autorelease之后引用计数不会立即-1。
autorelease返回对象本身。
二 实例
// Person.h
@interf...
分类:
移动开发 时间:
2015-01-30 10:51:22
阅读次数:
158