2015-12-11 55 views
-3

問題是非常自我解釋的,但我會添加一個例子來澄清它。c函數可以返回一個字符串嗎?

例如,我們有這樣的功能:

char abc(void) 
    { 
     code... 
     code... 
     return a; 
    } 

這個函數會返回一個字符爲abc,但函數返回一個整串,不使用指針,文件I/O和這樣的事情?

+1

在C中,一個字符串_is_通常是一個指針,因爲它是一個'char'數組(又名'char *'或'char []')。 – Arc676

+0

一個字符串是一個char指針,這是C代表字符串的方式,沒有辦法避免這個事實。 – arduic

+3

使用struct(作爲包裝)。 – BLUEPIXY

回答

1

C字符串是char的數組,終止於值爲0char。 C函數本身不能返回數組,包括字符串,事實上,數組也可以作爲參數傳遞。傳遞和/或返回指針是C的傳遞和/或返回數組的替代方法。在很大程度上,你甚至不需要做任何特殊的事情來傳遞或返回指針來代替數組。

因爲講清楚這些事情有點麻煩,所以指針/數組區別經常被忽略,甚至是文檔。人們經常將char *稱爲一個字符串,而實際上該字符串是指向其第一個元素的數組。但是,這確實存在混淆的可能性,這在問題和相關評論中是明顯的。

+0

所以基本上,你不能在函數中返回正常返回的字符串,但是如果我理解你的意思,你必須使用指針。 – leon000

+2

@ leon000:的確如此。在C中避免使用指針就像不飲用液體:你不會走得太遠。如果你不喜歡指針,C肯定是錯誤的語言。 – Olaf

+0

好的,非常感謝你們,我想我必須要麼圍繞指針工作,要麼閱讀指針,因爲我並不是真正的指針大師,而我剛開始學習它們。剛剛看到你的編輯,我不是真的避免指針,我只是讓我們推遲他們,因爲我還沒有真正學到他們的全部。 – leon000