一般C++的参数入栈方式是从右向左,下面用一个小端机器来用一个例子研究一下。
long long a = 1, b = 2, c = 3;
printf("%d %d %d\n", a, b, c);
那么输出是多少呢?
这里涉及到几个方面:
1. 函数入栈方式,一般从右向左,这里假设以这样的方式
2. 大小端机器,这里是小端机器,所以低地址存储低字节,高地址存储高字节。
3. 栈增长方向。。从高位地址向低位地址增长,所以a, b, c在内存中结构如下,
4. 取多少数据,这里是取三个int型数据
所以当printf从栈按顺序取数据的时候,取的是1, 0, 2。
本文通过一个简单的C++示例,详细解释了参数入栈的顺序,并结合小端机器的特点,说明了如何影响printf函数输出的具体数值。
550

被折叠的 条评论
为什么被折叠?



