&;char和char指针是不兼容的指针类型?

&;char和char指针是不兼容的指针类型?,c,C,发出以下警告: char filename[100]; char *file; fgets(filename,100,stdin); file =&filename; 因为我使用&来获取变量的地址,所以&filename和file的类型不是与字符的地址相同吗?Replace语句file=&filename按文件=文件名 warning: assignment from incompatible pointer type [enabled by default] file =&

发出以下警告:

char filename[100];
char *file;
fgets(filename,100,stdin);
file =&filename;

因为我使用&来获取变量的地址,所以&filename和file的类型不是与字符的地址相同吗?

Replace语句
file=&filename
文件=文件名

warning: assignment from incompatible pointer type [enabled by default] 
file =&filename;
或者交替地

file = filename;

filename[100]是一个数组,filename(不带括号)指向该数组

我喜欢明确说明这一点并使用

file=&filename[0]


filename
是数组的标识符。对于记录,它不是指针(尽管在某些情况下它可能会衰减为指针)
filename[0]
是此数组的第0个元素。获取该数组的地址将为您提供指向该数组第0个元素的指针。使用
文件
的指针算法是有效的,因为它指向您拥有的连续内存块。

您的变量
文件
具有类型
字符*
,但当您在数组
文件名[100]
上应用运算符
的地址时,它具有类型
字符(*)[100]

显然,类型
char*
char(*)[100]
不兼容。要解决此问题,请编写:

file = &(filename[0]);


[]
实际上意味着什么……答案不能正确解释
&filename
的类型。这不能解释任何事情。什么是字符(*)[100]类型?
file = filename;
file = &filename[0];