【发布时间】:2013-06-21 02:05:26
【问题描述】:
我对“来自不兼容指针类型的赋值”警告有疑问。为什么下面的代码
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 incompatible pointer type when using pointers and arrays?
感谢您的帮助!
【问题讨论】:
-
被问过很多次了。 Is 2d array a double pointer? 的可能重复项
标签: c pointers warnings compiler-warnings