• ZOOM 校招 几道C语言小题


    1. 以下 C代码的运行结果是什么 ( )

    #include 
    
    int main() {
        const char* arr[] = { "C", "C++", "Java", "Python" };
        const char* (*ptr)[4] = &arr;
        printf("%s", ++(*ptr)[2]);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • C++
    • C
    • Java
    • ava

    5行的(*ptr)[4]中,ptr是一个1⃣️数组指针: 指向包含四个char*元素的数组arr的指针,即地址的地址———— ptr = &arr, *ptr = arr。所以,第6行的++(*ptr)[2]就等价于++arr[2]
    然后,2⃣️[]操作符的优先级,大于自增操作符++。所以,arr[2]就是字符串”Java”,即char数组{ ‘J’, ‘a’, ‘v’, ‘a’ }首地址,首地址指向字符‘J’,自增之后指向1号字符‘a’。此时,以此为首地址的char数组就是{ ‘a’, ‘v’, ‘a’ },作为一个字符串就是“ava”

    ⚠️补充:3⃣️ *ptr[4]指针数组,即数组中的每个元素都是一个指针/地址,比如第4行的char* arr[]就是。那如果第5行改成 *ptr[4]的话,等号=右边得改成{ arr, arr + 1, arr + 2, arr + 3}, 此时,ptr就是地址、的地址、的地址(三重奏),ptr[0][1][0] == ‘+’ == arr[1][0],或者,直接把arr当成2维数组,ptr当作3维的。

    2. 以下 C代码的运行结果正确的是什么______

    int x = 3;
    x += x -= x * x;
    
    • 1
    • 2

    ‼️从右到左算:

    1. x = x - x * x ————>>     x = − 6 x=-6 x=6
    2. x = x + x        ————>>     x = − 12 x=-12 x=12

    3. C语言文件,错误的是( )

    • C语言可以处理的文件类型主要有文本文件,二进制文件和数据流文件
    • C语言通常利用fopen返回一个指向FILE结构体的指针
    • C语言中mode控制符规定了打开文件的格式
    • mode控制符中rb+表示对二进制的读写

    ‼️fopen返回的是地址

    FILE *f = fopen(“filename”, “rb+);
    
    • 1

    f才是指针

    只要mode+就是读写全能,mode的具体参数细节参考——>>博客文章链接

  • 相关阅读:
    Zbit ZB25VQ16ASIG 16M flash
    2-Docker进阶
    JAVA---RMI详解1
    android 13.0 SystemUI导航栏添加虚拟按键功能(三)
    Spark系列之Spark的Shuffle详解及相关参数调优
    前端版本控制工具,常见的Git 和SVN
    Kafka常见问题解析
    【C++】常用算术生成算法
    提高代码质量!详解在Gradle项目中使用PMD的正确姿势
    Qt升级血与泪
  • 原文地址:https://blog.csdn.net/as091313/article/details/126282789