【问题标题】:Multidimensional char array in C in functionC函数中的多维char数组
【发布时间】:2014-12-27 16:45:30
【问题描述】:

如何在 C 中使用带有字符串数组的函数? 我的代码:

void test(char **a){
    printf("%s", a[0]);
}
int main(){
    char b[10][10];
    strcpy(b[0],"abc");
    strcpy(b[1],"dfgd");
    test(b);
    return 0;
}

如何使这个代码示例工作?

【问题讨论】:

  • 编译器不知道函数test中指向数组的“真实”维度。我很惊讶它没有在test(b) 线上发出警告。将char **a 更改为char a[][10]
  • 非常感谢 :) 它有效。

标签: c function multidimensional-array


【解决方案1】:

你可以使用:

void test(char a[10][10]){
    printf("%s", a[0]);
}

void test(char a[][10]){
    printf("%s", a[0]);
}

void test(char (*a)[10]){
    printf("%s", a[0]);
}

int main(){
    char b[10][10];
    strcpy(b[0],"abc");
    strcpy(b[1],"dfgd");
    test(b);
    return 0;
}

所有三个声明都是完全等价的。虽然最后一个更好。

这个answer 解释得更好

【讨论】:

  • 我认为这很糟糕:(因为我一问这个问题,反对票就像风一样飘扬:(
  • 您可以重新打开它(抱歉,其中一个是我的,如果您重新打开/取消删除问题,我当然愿意收回它们)。
  • 链接很好,但我认为您至少应该说所有三个声明都是完全等价的。为了清楚起见,我还要添加一个提示,以便更喜欢最后一个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 2018-01-05
  • 2012-12-08
  • 1970-01-01
相关资源
最近更新 更多