我对警告“来自不兼容的指针类型的赋值”有疑问。为什么下面的代码
const char files[][128]={"file1","file2","file3"};
char **ptr;
ptr=files;
产生这个警告?更复杂的东西工作得很好:
typedef struct
{
double **matrix;
}foo_struct;
void fun(foo_struct *foo)
{
double **ptr;
ptr=(*foo).matrix;
}
所以我真的不明白为什么第一个会给出这个警告,因为我认为像 files[][128] 这样的东西与 char **ptr 的类型相同。我看到的唯一区别是 C 知道有效内存区域的跨度/大小,而在第二个示例中它不知道。
这是类似的东西,但对我没有帮助:Warning about assignment from in compatible pointer type when using pointers and arrays?
谢谢您的帮助!