久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C語言函數(shù)參數(shù)壓棧的順序是,?

 嵌入式大雜燴 2021-08-20

今天分享關于C語言函數(shù)參數(shù)壓棧順序的問題,。按照日常習慣,C語言的函數(shù)參數(shù)壓棧順序是從左到右吧,?但是事實卻是相反的,,C語言函數(shù)參數(shù)壓棧順序是從右到左的。下面看一個程序:

#include <stdio.h>

void stack_test1(int a, int b, int c);

int main(void)
{
 int a = 1, b = 2, c = 3;
 
 stack_test1(a, b, c);
 
 return 0;
}

void stack_test1(int a, int b, int c)
{
 printf("a = %d, &a = %#x \n", a, (unsigned int)&a);
 printf("b = %d, &b = %#x \n", b, (unsigned int)&b);
 printf("c = %d, &c = %#x \n", c, (unsigned int)&c);
}

該程序輸出結果為:

a = 1, &a = 0x61fef0
b = 2, &b = 0x61fef4
c = 3, &c = 0x61fef8

我們知道,,棧是向下生長的,,即從高地址向低地址的方向分配內(nèi)存。由程序輸出結果可知,,變量c的值首先存儲在高地址,,其次是b,最后低地址保存a,。即函數(shù)的參數(shù)壓棧的順序是從右到左,。

為什么是從右到左呢?下面使用printf函數(shù)來分析:

printf函數(shù)的原型是:int printf(const char *format,...);

我們都知道,,printf是個變參函數(shù),。那么,其參數(shù)的個數(shù)是如何確定的呢,,靠的就是format,,如果format首先被壓入棧中,就無法知道還有多少個參數(shù)還沒入棧了,;所以,,format應該最后入棧,才能確定參數(shù)的個數(shù),,也即符合參數(shù)入棧順序為“從右到左”的規(guī)則,。

以上就是關于函數(shù)參數(shù)壓棧順序的總結,,希望能對大家有幫助。

感謝您的閱讀,,歡迎持續(xù)關注,!

每日一句

你所做的一切努力并不會立即給你想要的一切,但可以讓你逐漸成為你想成為的那一種人,。

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多