zoukankan      html  css  js  c++  java
  • [000]C语言 K&R style definition

    前几天,一个同事偶尔发出来一段有意思的代码,之前从来没见到过,算是收藏了,原来C中还可以这样定义的
    code:

     

    #include<stdio.h>
    
    void  function(arg1, arg2)
    int arg1;
    int arg2;
    {
        printf("arg1=%d,  arg2=%d", arg1, arg2);
    }
    
    int main(){
    
        function(1,2);
        function(1);
        function();
    
        return 0;
    }

    ---------------------------------------------------------------

    输出:

        arg1=1, arg2=2
        arg1=1, arg2=2
        arg1=1, arg2=2
    ------------------------------------
    你也可以试试,调换一下函数调用顺序,如下:
        function();
        function(1);
        function(1,2); 
    输出如下:
        arg1=134513424, arg2=134513755
        arg1=1, arg2=134513755
        arg1=1, arg2=2

    原因并不是函数有什么记忆功能,而是因为函数调用时,
    堆栈上的内容(或者通用寄存器)没有被改变,
    所以输出是一样的。至于每次输出结构是否一样,
    是依据编译器和硬件而不一样的。


    如果在function(1)function()的调用之间,
    调用其他函数,就可以改变堆栈或者寄存器内容,
    这调用之后,出处结果就不一样了。

  • 相关阅读:
    常用正则总结
    JavaScript中with语句的理解
    设置点击文本框或图片弹出日历控件
    设置时间 new Date
    windows 下配置 nginx的问题
    CSS3滚动条-webkit-scrollbar
    /、./、../ 的区别
    js中如何获取纯正的undefined?
    关于渐进增强和优雅降级
    每日一练-第三期
  • 原文地址:https://www.cnblogs.com/hustcser/p/2717875.html
Copyright © 2011-2022 走看看