• 牛客网-C++-2020.9.2


    1. for循环语句能够被改写成(D)语句

    A. 复合 B. if C. switch D. while

    解析:

    for循环可以写成while控制循环的次数,同时也可以被改写成do while语句

    2. 以下程序的输出结果是(you&me)。

    void main () 
    { 
    char arr[2][4];
    strcpy (arr[0],"you");strcpy (arr[1],"me"); 
    arr[0][3]=’&’; 
    printf("%s 
    ",arr);
    } 

    解析:

    【解释】因为arr是一个2行4列的二维数组,每一行可以存放最多三个字符的字符串。 

    执行strcpy(art[0],"you”);后则将字符串"you”放置在数组arr的第一行上,即a[0][0]=’y’,

    a[0][1]=’o’,a[0][2]=’u',a[0][3]=’’(字符串结尾符),执行strcpy(arr[1],”me”);后则将字符 

    串”me”放置在数组arr的第二行上,即a[1][0]=’m',a[1][1]=’e’,a[1][2]=’’(字符串结尾符), 

    由于二维数组在内存中是以行序存放的,执行arr[0][3]=’&’;后,第一行与第二行将视为 

    一个字符串"you&me”,而数组名则是该字符串的首地址。所以正确答案是A。

    3. c++声明const int i,是在哪个阶段做到i只可读的?

    答:编译

    解析:const说明变量是常量,常量存储在常量区,在编译时就直接将其替换成相应的引用。

    const int i = 10; 编译时候就和变量i做了对应,后面程序用到i的时候,直接从编译器的符号表中取10,不会再查找内存。在c++中 const修饰的变量是常量,分配在全局区的常量区,而我们的全局区和代码区在编译完了就已经确定,只有栈区和堆区才是运行是分配的。表示变量i是一个常变量,在编译阶段,程序后面只要出现i这个标识符都会被用10进行替换。这一点类似于宏,#define i 10.const用来说明所定义的变量是只读的。 这些在编译期间完成,编译器可能使用常数直接替换掉对此变量的引用。 

    源代码到可执行文件的过程:

    源代码->预处理->编译->优化->汇编->链接->可执行文件

    4. 运算符重载以后,其优先级和结合性都不能改变

    解析:

    运算符重载规则: 
        重载的功能应当与原功能相似,不能改变原运算符的操作个数,同时至少要有一个操作数的类型是自定义类型。重载之后运算符的优先级和结合性都不会改变,并且要保持原运算符的语法结构。参数和函数值类型都可以重新说明。
     
    5. 某32位系统下, C++程序void *p = malloc( 100 ); sizeof (p) = ?
    解析:4,指针的大小依赖于平台,32位一般为4,64位一般为8,总是与int保持一致。
     
    6. 在C语言中,以下代码执行之后,*p的值为()
    void func(int *p)
    {
        static int num = 4;
        p = #
        (*p)--;
    }
    int main()
    {
        int i = 5;
        int *p = &i;
        func(p);
        printf("%d", *p);
        return 0;
    }
    解析:尽管函数的形参是指针,但是它仍然是“值传递”
    一方面,函数本身没有任何返回,另一方面,函数只是对p的值的处理,并非p的地址。
    函数调用时,p作为实参,函数中也给p重新复制,函数确实使静态局部变量num的值减一,但是函数执行完,返回到主函数中,p中的仍然是i的地址。
     
    7. 面向对象的程序设计的优点包含:
    答:可重用性、可扩展性、易于维护与管理、简单易懂,面向对象的三大特性:多态、继承、封装。
     
    8. 关于数组和指针的区别描述正确的是?
    A. 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。
    B. 用运算符sizeof可以计算出数组的容量(字节数)。
    C. 指针可以随时指向任意类型的内存块。
    D. 用运算符sizeof可以计算出指针所指向的内容的容量(字节数)。
    解析:B
    A是在堆上创建动态数组;
    B中sizeof(数组名)就是数组的容量
    C中const指针不可以,char* const p;是指针常量
    D中char* str = "hello";sizeof(str)不能计算出内容的容量,只是指针的容量。
     
     
     
     
  • 相关阅读:
    剑指Offer 07 重建二叉树
    剑指Offer 06 从尾到头打印链表
    剑指Offer 05 替换空格
    剑指Offer 04 二维数组中的查找
    剑指Offer 03 数组中重复的数字
    leetcode518
    leetcode474
    leetcode376
    leetcode646
    leetcode213
  • 原文地址:https://www.cnblogs.com/lbwBH/p/13605302.html
Copyright © 2020-2023  润新知