char filename[100];
char *file;
fgets(filename,100,stdin);
file =&filename;
给这样的警告:&char和char指针是不兼容的指针类型?
warning: assignment from incompatible pointer type [enabled by default]
file =&filename;
是不是&文件名和文件具有相同类型性格的地址,因为我使用&来获取变量的地址?
char filename[100];
char *file;
fgets(filename,100,stdin);
file =&filename;
给这样的警告:&char和char指针是不兼容的指针类型?
warning: assignment from incompatible pointer type [enabled by default]
file =&filename;
是不是&文件名和文件具有相同类型性格的地址,因为我使用&来获取变量的地址?
将陈述file = &filename;
替换为file = filename;
。
file = filename;
或alternativly
file = &(filename[0]);
文件名[100]是一个数组,和文件名(没有括号中)指向阵列;
我喜欢是明确的了解这个和使用
file = &filename[0];
filename
是用于阵列的标识符。为了记录,它是而不是指针(尽管它可以在某些情况下将衰减指向一个指针)。 filename[0]
是这个数组的第零个元素。取这个地址给你一个指向该数组的第零个元素的指针。指针运算使用file
是有效,因为它指向您拥有的连续内存块。
你的变量file
具有类型char *
,但是当您在阵列filename[100]
上应用的地址的运营商&
,它的类型是char (*)[100]
。
明显,类型char *
和char (*)[100]
是incompatible.To解决问题,或者请写:
file = filename;
或
file = &filename[0];
只比正确回答解释'&filename'的类型。 – chux
的'[]'实际上意味着什么... –