为什么我的代码不使用类型转换进行编译?

Why is my code not compiling using typecast?

本文关键字:换进 转换 编译 类型 我的 代码 为什么      更新时间:2023-10-16

为什么这段代码不能编译?

int substring(char * text, int k, int m, (char *) patterns[]) {
//stuff
// and example return is -1, meaning the sub string was not found
}

我知道(char *)中的括号是问题所在,但我似乎无法弄清楚为什么?我尝试在 C++ 和 C 中将制作模式声明为字符串,但它无法编译。

错误消息是"错误:预期的声明说明符或'...'在"("标记"之前。这是我的班级的算法,我的教授给了我们带有这些参数的函数。此外,"模式是指向长度为 m 的 \0 终止字符串的 k 指针数组。我只想知道为什么给定的函数不编译,即使你只写 return -1。

类型说明符不得括在声明的括号中。您声明了一个函数。它不是对带有参数的函数的调用,而您确实可以应用强制转换。

将二维字符数组或包含字符串的类型为char *的元素的数组重新解释为一维数组是没有意义的。

考虑到参数的声明

char * patterns[]

相当于

char ** patterns

char *是一个类型声明,而不是类型转换(即转换)。