問題是非常自我解釋的,但我會添加一個例子來澄清它。c函數可以返回一個字符串嗎?
例如,我們有這樣的功能:
char abc(void)
{
code...
code...
return a;
}
這個函數會返回一個字符爲abc,但函數返回一個整串,不使用指針,文件I/O和這樣的事情?
問題是非常自我解釋的,但我會添加一個例子來澄清它。c函數可以返回一個字符串嗎?
例如,我們有這樣的功能:
char abc(void)
{
code...
code...
return a;
}
這個函數會返回一個字符爲abc,但函數返回一個整串,不使用指針,文件I/O和這樣的事情?
C字符串是char
的數組,終止於值爲0
的char
。 C函數本身不能返回數組,包括字符串,事實上,數組也可以作爲參數傳遞。傳遞和/或返回指針是C的傳遞和/或返回數組的替代方法。在很大程度上,你甚至不需要做任何特殊的事情來傳遞或返回指針來代替數組。
因爲講清楚這些事情有點麻煩,所以指針/數組區別經常被忽略,甚至是文檔。人們經常將char *
稱爲一個字符串,而實際上該字符串是指向其第一個元素的數組。但是,這確實存在混淆的可能性,這在問題和相關評論中是明顯的。
在C中,一個字符串_is_通常是一個指針,因爲它是一個'char'數組(又名'char *'或'char []')。 – Arc676
一個字符串是一個char指針,這是C代表字符串的方式,沒有辦法避免這個事實。 – arduic
使用struct(作爲包裝)。 – BLUEPIXY