• C++面试题的总结


    试题

    解释

     

    那个题打错字了,是:友元运算法符,指的是以友元的形式重载运算符。

    运算符重载两种形式:成员函数和友元

    若是成员函数 在重载时会有一个隐藏的参数 *this 所以答案是 C

    若是友元的话就不存在默认参数了,答案是B

     

    这个错误主要是没看清找不必要的。函数主要是函数名 函数体 参数 返回值等。

     

    数组的定义和实例化考察:

    本题定义了一个二维数组,分别是x[0]和x[1]两个。

    所以 x[1]就是4的地址 *x[1]表示4这个值了。

    而且,在x[][]二维的定义中 的初始化方式 参考

    http://see.xidian.edu.cn/cpp/biancheng/view/152.html

     

    转义字符的含义考察,\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。
    但是 还有一个考察 那就是 字符串以 \0为结束。所以,strlen 不会检测\0以后的字符长度。st的大小就是数组的大小20

    还是字符串的问题:什么是字符创长度呢?
    我觉得这个答案估计是错了,
    当然,我用sizeof求 得到 4 用strlen得到 3
    可以知道,sizeof  表示  char* 的长度  包括了 \0
    而 strlen在\0也结束了 并且不包括它。
     

     这个题在面试中碰到过,下面说一下几种情况:

    int arr[3]

    1. 指针数组

    int *p[3]

    这个定义了一个指针数组,元素是三个指针 分别指向 三个int型的地址。

    等同于 int *(p[3])

    2.指针

    int (*p)[3]

    定义了一个指针,指向一个有三个元素的数组的地址

    如: p=&arr;

    运算符优先级的考察:

    个人觉得,不好记,但是一般的尽量记住:比如赋值运算符、&&、|| 等的优先级较低。

    () 优先级最高等。

    http://en.cppreference.com/w/cpp/language/operator_precedence

    这个里面所有的优先级对照表可以参考。

    题中:!的优先级比 &&要高,所以,!x为true 再来计算 &&后面的真值。另外,对于 &&和||还有编译器优化计算的能力,比如&&之前的值为false 就没有必要计算后面的值了,事实上,编译器就是这样工作的。

    如下题

    我们知道 ()的优先级最高,= 赋值运算较低,比较运算较为高。所以,&&之前的值

    为(m=a>b)

    这个得好好讲讲了,首先是计算顺序,>比赋值要高所以得到 m=0 。之后就是赋值后的返回值了,

          int operator=(int) 返回赋值的那个值,为 0

    所以整个表达式的值是 0 及不会执行后面的值了。

    还有一个题,跟人觉得考得挺好的,这里贴出来:
    void GetMemory(char *p)
    {
    p=(char*)malloc(100);
    }
    p参数是复制原有指针的值,而不是原来的指针,所以即使p重新指向新的地址,但原来的指针指向的地址不变。
    char *GetMemory(void)
    {
    char p[]="helloworld";
    return p;
    }
    p是局部变量,在离开作用域后栈空间会被回收,结果不可预料。
    void GetMemory2(char **p, int num)
    {
    *p = (char*)malloc(num);
    }
    p是指向传入的指针的指针,*p为传入的指针赋值,所以改变了传入指针的值,也可以写成这样:
    void GetMemory(char *&p)
    {
    p=(char*)malloc(100);
    }
    效果一样


    作者:leisure
    原文出自:http://www.cnblogs.com/leisure/
    感谢园子,感谢各位支持。本文版权归伟征和博客园共有,欢迎转载@ 但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    只是想分享,欢迎拍砖!促进我成长

  • 相关阅读:
    蓝桥杯如何训练?(附VIP题库)
    scratch2.0的教材视频,王木头系列
    out文件 dev c++
    MongoDB 学习笔记
    golang 学习笔记 -- struct interface的使用
    goang学习笔记---struct
    golang 学习笔记 ---JSON
    golang学习笔记 ---rand
    golang学习笔记 --go test
    golang学习笔记---string && strconv
  • 原文地址:https://www.cnblogs.com/leisure/p/2769395.html
Copyright © 2020-2023  润新知