重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
pop函数 出栈 ;push函数 进栈。
成都创新互联公司主营吉木乃网站建设的网络公司,主营网站建设方案,成都APP应用开发,吉木乃h5小程序开发搭建,吉木乃网站营销推广欢迎吉木乃等地区企业咨询
相当于有一个箱子,push函数是把东西放进去;而pop函数则相反,是把东西从那箱子里拿出来。
是取结构体S的地址,因为c语言的函数传的是形参的值拷贝,所以如果不加,那么你在函数里面对S的操作其实是对一个临时结构体的操作。
例子
struct A{
int i;
};
struct A x;
x.i=0;
void fun1(A y)
{
y.i=1
}
void fun2(A py)
{
(*py).i=2;
}
//调用
fun1(x);没用x.i还是0
fun2(x);有用x.i是10
1、打开或者新建.h文件;
2、在该文件中添加你的函数;
3、保存退出,记住该文件名及其路径;
4、在新文件中包含该文件名,如果该文件不在搜索路径下,则包含该文件的全名
比如:
定义一个函数void
mydefun(){}
调试无误后,以文件名aa.h保存在D:\abc目录下
在新文件中要用到这个函数,则包含语句中必须有以下一条语句:
#include"D:\\abc\\aa.h"
然后你就可以调用mydefun()函数了。
1.这个是栈的数据结构 必须自己实现(它跟push和pop指令没有关系 可以去学习《数据结构》)
2.push和pop是指令不是函数 用嵌入汇编实现
#includestdio.h
int main(void)
{
char*a="hello world!\n";
_asm{ push a}
printf("%s");
_asm{add esp,4}
return 0;
}
#include stdio.h
#include stdlib.h
#define MAXSIZE 32
typedef struct{
int *elem;/* 栈的存储区 */
int max; /* 栈的容量,即找中最多能存放的元素个数 */
int top; /* 栈顶指针 */
}Stack;
int InitStack(Stack *S, int n) /*创建容量为n的空栈*/
{
S-elem = (int *)malloc(n * sizeof(int));
if(S-elem==NULL) return -1;
S-max=n;
S-top =0; //栈顶初值0
return 0;
}
int Push(Stack *S, int item) /*将整数item压入栈顶*/
{
if(S-top==S-max) {
printf("Stack is full! \n");
return -1;
}
S-elem[S-top++] = item; //压栈,栈顶加1
return 0;
}
int StackEmpty(Stack S)
{
return (!S.top)?1:0; /*判断栈是否为空*/
}
int Pop(Stack *S) /*栈顶元素出栈*/
{
if(!S-top) {
printf("Pop an empty stack!\n");
return -1;
}
return S-elem[--S-top] ; //弹出栈,栈顶减1
}
void MultibaseOutput(long n,int B)
{
int m; Stack S;
if(InitStack(S,MAXSIZE)){
printf("Failure!\n");
return;
}
do {
if (Push(S,B )) //------
{
printf("Failure!\n");
return;
}
n= n-1 ; //--------
}while(n!=0);
while(!StackEmpty(S)) { /*输出B进制的数*/
m=Pop(S);
if(m10) printf("%d",m); /*小于10,输出数字*/
else printf("%c", m+55); /*大于或等于10,输出相应的字符*/
}
printf("\n");
}