关于函数形参入栈顺序问题

yun_xy 2005-10-14 03:18:19
大多编译器是按从右到左的顺序进栈,
如果形参为int时,b的地址比a大,但为字符时,a的地址比b大,为什么?
#include <iostream>
#include <stdlib.h>
using namespace std;

int v1(int a,int b)
{
cout <<"The address of int a is:"<<(int)&a<<endl;
cout <<"The address of int b is:"<<(int)&b<<endl;
return 0;
}
int v2(char a,char b)
{
cout <<"The address of char a is:"<<(int)&a<<endl;
cout <<"The address of char b is:"<<(int)&b<<endl;
return 0;
}
int main()
{
v1(2,10);
v2(2,10);
getchar();
return 0;

}
...全文
184 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
megaboy 2005-10-14
  • 打赏
  • 举报
回复
C标准规定,参数的入栈顺序是实现相关的。
yun_xy 2005-10-14
  • 打赏
  • 举报
回复
我是在dev-c++下测试,第2个函数的b地址比a小
baicheng 2005-10-14
  • 打赏
  • 举报
回复
VC上没问题,等高人解释
lvyao1011 2005-10-14
  • 打赏
  • 举报
回复
我用C实现了你的程序,结果都是b的地址比a的地址大啊。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧