0

我刚回到 eclipse 上用 C 开发,我遇到了很大的问题,我不知道如何解决,不记得我以前开发时曾经遇到过这样的问题。无论如何,我会向你指出 2 个问题(我在这里让我的示例易于发布):

#include <stdio.h>

int change_array(char *str, char *a[]) {
    a[0] = "changed [0]";
    if (fgets(str, 200, stdin) != NULL) {
    }
    return 0;
}

int main() {
    char str[200];
    char a[15][200];
    change_array(str, a);
    printf("a[0]: %s\n", a[0]);
    printf("str: %s\n", str);
    return 0;
}
  1. 在“change_array(str, a)”行中收到警告:从不兼容的指针类型传递“change_array”的参数 2 [默认启用] - 为什么?
  2. 运行我的“无所事事”代码示例输出后是:
    • 一些价值
    • a[0]: � <-------- 出现连线字符
    • str:一些值
4

1 回答 1

1

问题就在这里...int change_array(char *str, char *a[])

的维度a是未定义的,所以它不知道每一步要走多远,*a并且a是一个指向 char 的指针数组。但是,您传入的是 200 个字符的数组。因此不兼容的类型错误。

我相信你的问题会随着......

int change_array(char *str, char (*a)[200])

在这种情况下,a是一个指向 200 个字符数组的指针,编译器现在知道将a

于 2013-04-28T22:38:20.927 回答