&;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];