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;
}
![](https://profile-avatar.csdnimg.cn/b001a64b48524166b6c209512ed79f57_daseg.jpg!4)
c++的函数调用二维数组指针
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 快乐鹦鹉 2022-09-16 19:45关注
二维数组和char **不是一回事,不能将二维数组赋值给指针的指针
改为
char * max_str = max_n((char **)str_arr, 5);牵制转换一下,你看行不行解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥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利用率特别低,玩游戏卡顿