kbgy 2022-09-16 18:39 采纳率: 33.3%
浏览 16

c++的函数调用二维数组指针

template<>
auto max_n<char *>(char **char_arr, int num) -> char * {
    int max_str{};
    char *max_point{};
    for (int i = 0; i < num; ++i) {
        int temp_num{};
        for (int j = 0; char_arr[i][j] != '\0'; ++j)++temp_num;
        if (temp_num > max_str)max_point = char_arr[i];
    }
    return max_point;
}

auto sixth_practice() -> void {
    int int_num[9]{1, 6, 5, 7, 4, 2, 3, 9, 5};
    cout << "int_num max number is " << max_n(int_num, 9) << endl;

//    char **str_arr = new char *[5]{new char[30]{}, new char[30]{}, new char[30]{}, new char[30]{}, new char[30]{}};
//    strcat(str_arr[0],"guanweiyv");
//    strcat(str_arr[1],"ankuo");
//    strcat(str_arr[2],"xvpeng");
//    strcat(str_arr[3],"wangyatao");
//    strcat(str_arr[4],"renhongchuan");
    char str_arr[5][30] = {"guanweiyv", "ankuo", "xvpeng", "wangyatao", "renhongchuan"};

    char *max_str = max_n(str_arr, 5);//这里报错No matching function for call to 'max_n'
    //但是我用上面注释的方法就可以完美运行,二维数组str_arr[0]不就是二维数组的指针吗,
    //二维数组的指针不就是指针的指针,这里为什么报错呢
    cout << "max_str is ";
    for (int i = 0; max_str[i] != '\0'; ++i)cout << max_str[i];
    cout << endl;
}
  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-09-16 19:45
    关注

    二维数组和char **不是一回事,不能将二维数组赋值给指针的指针
    改为
    char * max_str = max_n((char **)str_arr, 5);牵制转换一下,你看行不行

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 9月16日

悬赏问题

  • ¥15 求jacquard数据集
  • ¥15 w10部分软件不能联网
  • ¥15 关于安装hbase的问题(操作系统-windows)
  • ¥15 cadence617版本,如何做一个参数可调的反相器
  • ¥15 novnc连接pve虚拟机报错安全协议不支持262
  • ¥15 设备精度0.03给多少公差能达到CPK1.33
  • ¥15 qt+ffmpeg报错non-existing PPS 0 referenced
  • ¥15 FOC simulink
  • ¥50 MacOS 使用虚拟机安装k8s
  • ¥20 玩游戏gpu和cpu利用率特别低,玩游戏卡顿