zoukankan      html  css  js  c++  java
  • 网新恒天笔试题,写出以下代码的输出结果

    #include <stdio.h>
    #include 
    <stdlib.h>

    #define N 5
    int* func(int* x, int* y)
    {
        
    static int t = 0;
        
    if (*< *y)
        {
            t 
    += *x;
            printf(
    "%d\n", t);
            
    return x;
        }
        
    else
        {
            t 
    += *y;
            printf(
    "%d\n", t);
            
    return x;
        }
    }

    int main(int argc, char *argv[])
    {
          
    int i;    
        
    int x = 3;
        
    int*p, *q, *r;

        q 
    = &x;
        
    for (i = 1; i <= N; i++ )
        {
            p 
    = &i;
            r 
    = func(p, q);
        }

        
    // i跳出循环时的值为6
        printf("%d, %d, %d\n"*p, *q, *r);
        
    //return 0;
      
      
      system(
    "PAUSE");    
      
    return 0;
    }

     输出结果:

    1

    3

    6

    9

    12

    6,3,6

    解析:

    static int t = 0;

    这个好解释,c语言的static关键字,修饰函数里的局部变量,只运行第一次,以后调到函数,都不会运行它。

    printf("%d, %d, %d\n"*p, *q, *r);

    *p输出是6,这个好解释,前面循环了么,于是到6了。*q输出是3,不用解释。

    *r也是6,而不是5?没错,因为循环完毕后,i的值是6,i的地址给指针p了,指针p指向的值就是6。


    合乎自然而生生不息。。。
  • 相关阅读:
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
  • 原文地址:https://www.cnblogs.com/samwu/p/1982674.html
Copyright © 2011-2022 走看看