c语言的参数传递

来源:互联网 发布:阿里巴巴和淘宝是谁的 编辑:程序博客网 时间:2024/05/01 06:46
c语言参数传递讲解
首先给大家看一个样例程序


int main()
{
    float n1 = 3.0;
    double n2 = 3.0;
    long n3 = 200000000;
    long n4 = 1234567890;
    printf("%.1e %.1e %.1e %.1e\n",n1,n2,n3,n4);
    printf("%ld %ld\n",n3,n4);
    printf("%ld %ld %ld %ld\n",n1,n2,n3,n4);
    return 0;
}


输出结果是


3.0e+000 3.0e+000 3.1e+046 3.4e+265
200000000 1234567890
0 1074266112 0 1074266112


Process returned 0 (0x0)   execution time : 0.067 s


可能你会有一点疑问,所以说一下c语言参数传递的东西,


在这一句代码中
printf("%ld %ld %ld %ld\n",n1,n2,n3,n4);
首先printf函数中,系统把传进来的参数放在一个堆栈的地方,然后调用的时候就将n1n2n3n4全部放在堆栈里边,所以n1是4个字节,因为3.0被系统默认为doubble类型的,转换成为了8个字节,n2也是8个字节,其他的都是4个字节,,然后printf按照参数说明就是ld读取4个字节,所以就是浮点数的前4个字节,然后按照顺序依次向下读取,所以就是上述的结果,但是不同的计算机可能有所不同。
0 0