C语言中可变参数函数实现原理

来源:互联网 发布:java生成随机数 编辑:程序博客网 时间:2024/05/17 01:00

斯坦福大学的《编程范式》讲过, 函数的参数是存在栈之中的, 存在栈中的变量会由高到低排列(地址)。参数是从右到左,逐一压入栈中的(栈的延伸方向是从高地址到低地址,栈底的占领着最高内存地址,先入栈的参数,其地理位置也就最高了)


因此,函数的所有参数是存储在线性连续的栈空间中的,基于这种存储结构,这样就可以从可变参数函数中必须有的第一个普通参数来寻址后续的所有可变参数的类型及其值。


自己对可变参数的一点理解:
众所周知, 内存是一块一块连续的区域, 而且函数的参数就是通过进栈而传入函数中的, 那么为什么不能圈出一片区域然后根据一个个向后递进来实现所谓的可变参数呢, 但是仍然会存在许许多多的问题, 比如说不同类型的参数长度不同, 不可能在运行时辨别,然后就是开多长也是一个问题。

重要:

千万不要看我的文章!!!!这只是我对C语言的理解, 我刚刚接触C语言不到半年的时间, 有些看法十分的误人!!!!

下面给出链接, 这才是真正的牛人, 遥遥而不可及。。。。。
牛人对其的理解,C语言中可变参数函数实现原理

0 0
原创粉丝点击