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

时间:2016-06-14 11:17:54

标签: c

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

发出此警告:

warning: assignment from incompatible pointer type [enabled by default] 
file =&filename;

&文件名和文件与字符地址的类型不同,因为我使用&获取变量的地址?

4 个答案:

答案 0 :(得分:5)

您的变量file的类型为char *但是当您在数组&上应用地址运算符filename[100]时,它的类型为char (*)[100]。< / p>

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

file = filename;

file = &filename[0];

答案 1 :(得分:3)

我喜欢明确这个并使用

file = &filename[0];

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

答案 2 :(得分:2)

file = &filename;替换为file = filename;

答案 3 :(得分:2)

file = filename;

或替代

file = &(filename[0]);

filename [100]是一个数组,而filename(没有括号)指向该数组;