zoukankan      html  css  js  c++  java
  • 第44课

    第44课 - 函数参数的秘密(上)

    1. 函数的参数

    (1)函数参数在本质上与局部变量相同,都在栈上分配空间

    (2)函数参数的初始值是函数调用时的实参值

             

     (3)C标准只规定了 必须要将每个实参的具体值求出来之后才能进行函数调用,并没有规定函数参数的求值顺序,求值顺序依赖于编译器的实现

             比如 void func(参数表达式1,参数表达式2,参数表达式3);这三个参数表达式哪一个先计算依赖于具体的编译器。 

    【函数参数的求值顺序】

     1 #include <stdio.h>
     2 
     3 int func(int i, int j)
     4 {
     5     printf("i = %d, j = %d
    ",i, j);
     6     return 0;
     7 }
     8 
     9 int f()
    10 {
    11     printf("f() Call...
    ");
    12     return 1;
    13 }
    14 
    15 int g()
    16 {
    17     printf("g() Call...
    ");
    18     return 2;
    19 }
    20 
    21 int main()
    22 {
    23     int k = 1;
    24 
    25     func(k++, k++); // 参数的求值顺序取决于编译器,gcc先计算右边的再计算左边的
    26 
    27     printf("k = %d
    ", k);
    28 
    29     a = f() * g(); // C语言中的乘法操作也是这样,左右操作数哪个先被求值依赖于编译器
    30 
    31     return 0;
    32 }

    gcc编译器的输出结果:

    2. 程序中的顺序点

    (1)

    (2)

    (3)

    3. C语言中的顺序点

  • 相关阅读:
    sizeof运算符:c
    c语言学习笔记重点理解 杂 给自己看
    代码编写永远记住一句话
    xcode DEBUG每个按钮的解释说明 ios
    Consecutive Subsequence CodeForces
    Cyclic Components CodeForces
    nyoj-0737-石子合并(dp)
    nyoj-0708-ones(dp)
    nyoj-0613-免费馅饼(dp)
    nyoj-0469-擅长排列的小明 II(找规律)
  • 原文地址:https://www.cnblogs.com/shiwenjie/p/11854079.html
Copyright © 2011-2022 走看看