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
的'[]'實際上意味着什麼... –