繁体   English   中英

如何将 char 数组声明为 function 参数?或者告诉我这段代码还有其他问题吗?

[英]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_rowsp_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM