[英]How to declare char array as function parameter ?or tell me there is some other thing wrong in this code?
我应该怎么做才能解决这个问题?
我不知道任何其他方式,所以我没有尝试任何东西
bool isPresent(int p_rows,int p_cols,char p_search[p_cols'1']'2','3'char p_words[][p_cols])
单个逗号中的计数表示我在哪个点收到了哪个错误。 我还想提一提的是,我正在这个程序中进行递归,并且还有其他函数的参数与此相同,但只有这个 function 定义会导致错误
1)use of parameter outside function body before ']' token
2)expected ')' before ',' token`enter code here`
3)[Error] expected unqualified-id before 'char'
可变长度 arrays 不是标准 C++ 功能。 然而在这个声明中
bool isPresent(int p_rows,int p_cols,char p_search[p_cols], char p_words[][p_cols]);
^^^^^^ ^^^^^^
您正在尝试使用变量 arrays 声明。
对于最后一个参数声明
char p_words[][p_cols]
变量p_cols
必须是编译时常量。
声明可以如下所示。 我假设作为最后一个参数传递给 function 的数组在程序中声明,例如具有固定常量维度的数组,变量p_rows
和p_cols
指定数组的子数组。
bool isPresent(int p_rows,int p_cols,char p_search[], char p_words[][N]);
其中N
是原始数组的第二个常量维度。
例如
const size_t M = 100;
const size_t N = 100;
bool isPresent(int p_rows,int p_cols,char p_search[], char p_words[][N]);
int main()
{
char p_words[M][N];
char p_search[N];
// ...
int p_rows = 10;
int p_cols = N;
isPresent( p_rows, p_cols, p_search, p_words );
//...
}
否则,您应该使用例如std::vector<std::vector<char>>
或std::vector<std::string>
或std::vector<char>
数组或std::string
而不是你原来的数组定义。
将字符数组声明为参数与将其声明为变量相同。
例如,数组
char ch_array[SIZE];
可以像这样声明为foo
的参数
void foo(char ch_array_arg[SIZE])
它也可以声明为指向字符序列的指针,如
void foo(char *ch_array_arg);
当然,在该示例中,您还必须指定数组的大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.