函数参数的压栈方式:从右至左这个大家都知道可是怎么应用呢??先来看一个企鹅的面试题。
#include<stdio.h>
void main()
{
long long a = 1;
long long b = 2;
long long c = 3;
printf("%d%d%d",a,b,c);
}
(小端模式)输出为1,0,2由与从左至右压栈
一个框表示一个字节。先取下面四个字节为1,往上取4个字节为0,最后去4个字节为2。所以输出为1,0,2。这个可能不是很明显我们再看一个。
#include <stdio.h>
void main()
{
int a[] = {6,7,8,9,10};
int *ptr = a;
*(ptr++) += 123;
printf("%d%d",*(ptr),*(++ptr));
}
这个输出为8,8而不是大家所谓的7,8。因为*(++ptr)先入所以ptr指向8,再将*ptr入栈所以为8,这样再出栈是就为8,8。这样就是结果8,8。