【问题标题】:Problem "note: expected ‘char **’ but argument is of type ‘char (*)[200]’" [duplicate]问题“注意:预期的‘char **’但参数的类型是‘char (*)[200]’”[重复]
【发布时间】:2020-09-13 23:07:20
【问题描述】:

在我的程序中,我声明了以下内容:

char S[1000][200]; 

一个字符串数组,并且有这样的函数:

char** buscar_str(char **S){.......}

但是当我尝试这个时:

buscar_str(S);

我收到上述错误note: expected ‘char **’ but argument is of type ‘char (*)[200]

我该如何解决这个问题?

【问题讨论】:

标签: c arrays function multidimensional-array


【解决方案1】:

没有直接的方法来协调这一点。给定char S[1000][200]S 是 200,000 字节的内存,组织成 200 个char 的 1000 个数组。但是用char **buscar_str(char **S) 声明的例程buscar_str 想要一个指向char 的一个或多个指针的指针。 S 中没有任何指向 char 的指针。你可以给一个,比如&S[0][0],但是你不能超过一个。

要解决此问题,您必须为指向char 的指针数组分配空间并用此类指针填充该数组(可能是S 中的各种char),或者您必须更改buscar_str 以接受指向数组的指针,例如char (*S)[200],或者不太可能是指向数组数组的指针,例如char (*S)[1000][200])。对于前者,您可以将S 传递给buscar_str。对于后者,您可以将&S 传递给buscar_str

如果没有进一步的信息,我们无法告诉您哪些选项适合您的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 2020-07-31
    • 2023-04-08
    相关资源
    最近更新 更多