今天我在學習C語言。我一直在使用託管語言(Java,C#,Python等)進行編碼。我以爲我瞭解指針的細節,但後來我寫了下面的代碼,按預期工作,但生成了「不兼容的指針類型」警告。澄清爲什麼此C代碼工作
void setText(char* output) {
//code to set output to whatever, no problems here.
}
int main(int argc, const char* argv[]) {
char output[10];
setText(&output);
//[EDITED] ...other test code which printf's and further manipulates output.
return 0;
}
所以我一派,並最終改變線路
setText(&output);
到
setText(output);
它擺脫了警告。但是現在我不知道爲什麼第一個人在工作。據我所知,我發送了一個地址的地址(因爲char * x;實質上與char x [];相同)。我誤解了什麼,爲什麼這兩個工作?
很難告訴你爲什麼'setText'沒有看到它的實現而工作。儘管如果所有的'setText'都設置了一個變量,然後程序退出,那麼如何判斷程序是否按照你想要的來執行? – jwodder
'T *'不*與* T [K]相同。見例如http://c-faq.com/~scs/cgi-bin/faqcat.cgi?sec=aryptr – delnan
@delnan:鏈接似乎中斷 – Cameron