先看一个代码:
void myfun(int i, int ii)
{
cout << i << " " << ii << endl;
}
void main()
{
int b = 3;
int arr[] = {6,7,8,9,10};
int *ptr = arr;
*(ptr++) += 123;
printf("%d\t%d\n", *ptr, *++ptr);
int i = 10;
myfun(i, ++i);
}
VS2008输出:
函数的调用规范
函数的调用规范,也称为调用约定(Calling convention)。函数的调用规范决定了函数调用时,实参压栈、退栈及堆栈释放方式,以及函数名改编(Name Mangling)的方案,也即命名规范。
Windows环境下常用的调用规范有:
1)__cdecl:这是C/C++函数默认的调用规范,参数从右向左依次传递,压入堆栈,由调用函数负责堆栈