`
庚午子
  • 浏览: 15094 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

压栈顺序是怎样的?

c 
阅读更多

#include <stdio.h>

#include <stdlib.h>

 

int f(int i,int j,int k);

 

int main()

{

static int i=0;

f(i++,i++,i++);

system("pause");

return 0;

}

 

int f(int i,int j,int k)

{

int l;

int g;

printf("k=%d:[%x]\n ",k,&k);

printf("j=%d:[%x]\n",j,&j);

printf("i=%d:[%x]\n",i,&i);

printf("\n");

printf("l:%x\n",&l);

printf("g:%x\n",&g);

}

输出结果:



 说明:(在栈中,由地址大的位置向着地址小的位置分配)

(1)main在调用函数的时候,函数f中的参数是先压l后压g(从左往右),而函数f的形参则是 从右往左 压栈的。

(2)压栈顺序和参数计算顺序不是一回事。所以看参数值并不能确定函数参数的压栈顺序,从地址顺序观察更准确。

  • 大小: 7.6 KB
分享到:
评论

相关推荐

    C/C++多参数函数参数的计算顺序与压栈顺序的示例代码

    "C/C++多参数函数参数的计算顺序与压栈顺序的示例代码" C/C++多参数函数参数的计算顺序与压栈顺序是非常重要的知识点,对于程序员来说了解这部分知识可以帮助他们更好地编写代码,避免一些常见的错误。在本文中,...

    顺序栈验证试验

    顺序栈是基于数组实现的,其特点是元素的插入(压栈)和删除(弹栈)操作都发生在栈顶,遵循“后进先出”(LIFO,Last In First Out)的原则。这个试验的目的就是帮助我们熟悉和验证顺序栈的基本操作。 顺序栈的...

    顺序栈,压栈、弹栈、获得栈顶元素、统计栈中元素个数、打印栈中元素

    2. **压栈(Push)**:当需要将新元素添加到栈时,会执行压栈操作。首先检查栈是否已满(即top是否等于数组长度减一),如果未满,则将元素存入数组的top+1位置,并将top加1。 3. **弹栈(Pop)**:弹栈操作用于...

    CC++函数参数压栈相关 小结

    这个例子展示了指针操作和参数压栈顺序的关系。 总的来说,了解函数调用约定对于理解和优化C/C++程序的性能至关重要,尤其是在涉及到跨平台或系统级编程时。不同的调用约定会影响程序的大小、速度和兼容性,因此...

    【OpenGL】二十一、OpenGL 矩阵压栈与出栈 ( 不同类型矩阵变换先后顺序 渲染前不设置单位阵 压栈出栈原理分析 代码示例 ).zip

    【OpenGL】二十一、OpenGL 矩阵压栈与出栈 ( 不同类型矩阵变换先后顺序 | 渲染前不设置单位阵 | 压栈出栈原理分析 | 代码示例 ) https://hanshuliang.blog.csdn.net/article/details/112917092 博客源码 ( 该源码是...

    C语言函数调用参数压栈的相关问题

    "C语言函数调用参数压栈的相关问题" 本文主要讲解了C语言函数...函数调用参数压栈的顺序是与体系架构相关的,不同的体系架构有不同的入栈顺序。编写代码时,需要了解栈的生长方向和体系架构的差异,以避免出现错误。

    顺序栈相关算法

    1、 定义顺序栈类。 2、 实现如下算法: 1)创建顺序栈; 2)插入操作:向栈顶压入值为 x 的...例如:(压栈 a,压栈 b,压栈 c,压栈 d,弹栈,弹 栈,弹栈,压栈 e,弹栈,读栈顶,弹栈。屏幕应输出 d,c,b,e,a,a)

    线性表,顺序表,顺序栈,链式栈

    "SeqStack"可能是包含顺序栈实现的文件夹,其中包含了压栈、弹栈、查看栈顶元素等操作。 链式栈则是栈的另一种实现方式,它不依赖于数组,而是通过链表来存储元素。每个节点包含元素值和指向下一个节点的指针。相比...

    数据结构 顺序栈

    在`sqstack_test.cpp`测试代码中,可能包括一系列的单元测试,例如创建一个顺序栈,进行压栈、出栈操作,检查栈的状态,以及处理异常情况,如空栈出栈等,以确保顺序栈的正确实现。 总结来说,顺序栈是一种简单而...

    顺序栈的表示和实现源码

    顺序栈的操作通常包括初始化、判断栈是否为空、获取栈顶元素、进栈(压栈)、出栈(弹栈)以及销毁栈等。下面我们将详细讨论这些知识点。 1. **初始化**: 初始化一个顺序栈通常涉及创建一个空数组或动态数组,并...

    栈的顺序存储结构C实现

    在这个结构中,元素的添加(称为“压栈”)和删除(称为“弹栈”)都发生在同一端,也就是栈顶。本文将详细介绍如何使用顺序存储结构来实现栈,并根据所给标题和描述,讨论相关的C语言实现细节。 首先,我们来看栈...

    顺序栈的实现,数据结构中的坚实支柱!.zip

    顺序栈使用数组来存储栈中的元素,并提供了压栈、出栈、判空、栈长度等基本操作。 顺序栈的核心功能包括压栈、出栈、判空和栈长度。压栈操作将新元素添加到栈的顶部,而出栈操作则是从栈的顶部删除元素。判空操作...

    浅谈C语言函数调用参数压栈的相关问题

    参数入栈的顺序 以前在面试中被人问到这样的问题,函数调用的时候,参数入栈的顺序是从左向右,还是从右向左。参数的入栈顺序主要看调用方式,一般来说,__cdecl 和__stdcall 都是参数从右到左入栈。 看下面的代码:...

    顺序栈数据结构

    在这个项目中,我们利用VC++编程环境实现了顺序栈的基本操作,包括初始化、压栈(入栈)、弹栈(出栈)以及查看栈顶元素等。下面将详细介绍顺序栈的数据结构、实现原理以及VC++中如何进行操作。 1. **顺序栈的数据...

    C语言函数调用栈(二)

    创建一个栈帧的最重要步骤是主调函数...对于有多个参数的函数,调用约定需规定主调函数将参数压栈的顺序(从左至右还是从右至左)。某些调用约定允许使用寄存器传参以提高性能。2)栈的维护方式主调函数将参数压栈后调用被

    数据结构顺序栈基于C++

    通常,这里会有创建顺序栈对象、执行一系列压栈和弹栈操作、打印栈的状态等示例,以验证栈的正确性。通过包含`sequentialstack.h`,主程序可以使用顺序栈类提供的接口。 在C++中,实现顺序栈的效率主要取决于内存...

    数据结构实验课之单链表类实现和顺序栈实现

    1、 定义单链表类。 2、 实验验证如下算法的正确性、各种功能及指标: 1) 创建单链表;...例如:(压栈 a,压栈 b,压栈 c,压栈 d,弹栈,弹 栈,弹栈,压栈 e,弹栈,读栈顶,弹栈。屏幕应输出 d,c,b,e,a,a)

    顺序栈、链栈将10进制转为2、8、16进制源码

    首先,顺序栈是一种基于数组的数据结构,其操作(如压栈和弹栈)都在数组的一端进行。在C++中,我们可以用动态数组或者std::vector来实现。由于数组的连续存储特性,顺序栈在插入和删除元素时速度较快,但当栈满时...

    C语言数据结构中顺序栈的算法之求表达式的值

    顺序栈的操作主要包括初始化、压栈(将元素添加到栈顶)、弹栈(移除并返回栈顶元素)以及查看栈顶元素但不移除。在表达式求值的过程中,我们可以利用栈来处理运算符和操作数,实现逆波兰表示法(RPN)或者中缀...

Global site tag (gtag.js) - Google Analytics