无法将参数'2'的'char *(*)[6]'转换为'char ***'为'void prac(int *,char ***)'(代码片
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将参数'2'的'char *(*)[6]'转换为'char ***'为'void prac(int *,char ***)'(代码片相关的知识,希望对你有一定的参考价值。
我在编译程序时看到这个错误:
Cannot convert 'char*(*)[6]' to 'char***' for argument '2' to 'void prac(int*,char***)'
我该如何修复代码?请帮我。
码:
#include <iostream>
using namespace std;
void prac(int *argc, char **b[])
{
//body
//
}
int main()
{
char *ptr_array[] = {"ssl","0.0.0.0","","tcp","0.0.0.0","8080"};
prac(&argc, &ptr_array);
return 0;
}
char *
用于指向字符串,因为只需要第一个字符的地址,因为它们是数组的连续内存位置。
因此,对于字符串数组,它可以是一个char指针数组。 aka char **b
只有2不是3.或char *b[]
#include <iostream>
using namespace std;
void prac(int *argc, char **b)
{
//body
//
}
int main(int argc, char *argv[])
{
char *ptr_array[] = {"ssl","0.0.0.0","","tcp","0.0.0.0","8080"};
prac(&argc, ptr_array);
return 0;
}
在传递给main的参数中已经为您呈现了答案
int main(int argc, char* argv[])
由于char* argv[]
是传递给程序的命令行参数的数组。更改prac声明中的参数以匹配它
int prac(int* argc, char* b[])
此外,您应该收到编译警告说明:
warning: ISO C++ forbids converting a string constant to ‘char*’
避免这样设置ptr_array
到const char*
和const char* b[]
的prac()
。
第一个答案可能是你想要的。如果您确实希望发送已显示的参数,则编译器消息实际上会告诉您如何声明参数:
void prac(int *argc, char *(*b)[6])
如果您认为额外的指针层将允许prac更改阵列,它实际上并不会给您带来太大的影响。它允许prac在main中更改argc的值,但它不能更改数组的实际大小。
以上是关于无法将参数'2'的'char *(*)[6]'转换为'char ***'为'void prac(int *,char ***)'(代码片的主要内容,如果未能解决你的问题,请参考以下文章
无法将'ViewController.Type'类型的值转换为预期的参数类型'UIViewController'
npm-解析'... serify'附近的JSON输入意外结束:“最新”,“cha”
flutter error:参数类型'Future '无法分配给参数类型'小部件'