C语言:eclipse的char数组问题和警告

时间:2013-04-28 22:33:27

标签: c arrays pointers char

我刚刚回来开发用于日食的C和我有很大的问题,我不知道如何解决,不记得我曾经有过这样的开发之前。无论如何,我会指出你的两个问题(我的例子很容易在这里发布):

#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]: &lt; -------有线字符出现
    • str:some-value

1 个答案:

答案 0 :(得分:1)

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

a的维度未定义,因此它不知道步骤每个*aa是指向char的指针数组。但是,您传递的是200个字符的数组数组。因此,不兼容的类型错误。

我相信你的问题会消失......

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

在这种情况下a是一个指向200个字符数组的指针,编译器现在知道步进a的每个索引的距离