MST

星途 面试题库

面试题:C++中字符常量和字符串常量在函数参数传递中的应用

编写一个C++函数,该函数接受一个字符常量和一个字符串常量作为参数。在函数内部,根据字符常量在字符串常量中出现的次数进行不同的操作(例如,如果出现次数为奇数,返回字符串长度;如果为偶数,返回出现次数)。请说明在传递这些常量时可能遇到的问题及如何解决。
15.6万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>
#include <string>

int operateOnChar(const char& c, const std::string& str) {
    int count = 0;
    for (char ch : str) {
        if (ch == c) {
            count++;
        }
    }
    if (count % 2 == 0) {
        return count;
    } else {
        return str.length();
    }
}

传递常量时可能遇到的问题及解决办法

  1. 传递字符串字面量时的类型问题:在C++中,字符串字面量的类型是const char[N],传递给函数时会退化为const char*。如果函数参数定义为const char*,在使用一些std::string相关功能时会不方便。解决办法是使用std::string类型来接收字符串,如上述代码中使用const std::string&接收字符串常量,这样既可以接收std::string对象,也可以接收字符串字面量,同时避免了不必要的拷贝。
  2. 字符常量传递问题:字符常量在传递时一般不会有太大问题,但如果不小心将字符常量写成字符串常量(例如'a'写成"a"),会导致类型不匹配错误。确保传递的字符常量是单引号括起来的单个字符。同时,使用const char&来接收字符常量,可以避免在函数内部对字符常量的意外修改,并且在传递时效率更高(因为传递的是引用而不是值拷贝)。