C語言實現(xiàn)返回一個字符串數(shù)組,是沒有這種功能的,但是可以用指向數(shù)組的指針來實現(xiàn):

創(chuàng)新互聯(lián)建站于2013年創(chuàng)立,先為順義等服務(wù)建站,順義等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為順義企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
解釋:
char **p 這個p就是指向數(shù)組的指針,它指向一個數(shù)組的起始地址.?
想要引用里面的數(shù)組時,直接使用p[i] 即可。
我們知道C語言里面的各種數(shù)組,本質(zhì)上都是指針,并且函數(shù)其實也是不能把數(shù)組當作參數(shù)的,實際上都是把數(shù)組的地址傳進去了,實際上就是指向數(shù)組地址的指針。
實現(xiàn)
這樣返回的P就是指向數(shù)組的指針了,實際上就是一個字符串數(shù)組
函數(shù)解釋:
函數(shù)返回一個字符串數(shù)組,實際上就是指向數(shù)組的指針,傳進去的是返回的數(shù)組的大小以及一個字符串數(shù)組,用來處理數(shù)據(jù)用。
//語法編碼規(guī)則的角度看
ANSI C語言標準,明確規(guī)定 數(shù)組類型和函數(shù)類型不可以做為返回值。
解決這種返回值的方法是通過指針來間接返回,即使用數(shù)組指針和函數(shù)指針。這可以做為c語言引入指針的另一個理由。
結(jié)構(gòu)體類型可以做為返回值,我猜測C語言設(shè)計者當時引入struct結(jié)構(gòu)體的概念,目的是為了增加一種建立C語言新類型的機制, 換句話說它希望通過struct建立的類型,像內(nèi)置的int float類型一樣使用方便。
//從匯編角度來看
有兩種返回值方法,第一種是直接返回到寄存器的,第二種是類似于結(jié)構(gòu)體返回值的那樣 建立臨時存儲區(qū)的返回方式
比如 int 返回值類型、指針返回值類型,在ia32平臺上都是直接返回到eax寄存器 不管是vc還是gcc, 對于像float 類型的浮點返回值類型,在ia32平臺,往往借助于fpu浮點運算器部件中的寄存器存儲于棧中,第三類就是像struct結(jié)構(gòu)體返回值,它需要建立臨時對象,對于c語言來說引入一個臨時內(nèi)在區(qū)域是問題不大的,但是對于c++這個有時候是致命的。
我是菜鳥,希望能幫到你,觀樓主英俊瀟灑,風流倜儻,必當世豪杰,誠邀加入0x30百度貼吧,共商義舉,建不世之功!
你的
程序
修改如下
#include
"stdio.h"
#define
N
3
#define
M
80
void
_kf(char
b[N][M]);
int
main(void)
{
int
i;
char
a[N][M];
puts("請輸入3個字符串");
_kf(a);
for(i=0;iN;i++)puts(a[i]);
system("PAUSE");
}
void
_kf(char
b[N][M])
{
int
i;
for(i=0;iN;i++)gets(b[i]);
}
1、在void
strcat()的strcat前添加*,表示返回char
指針。
2、strcat()應(yīng)該返回str1,即
return
str1。str1是連接的結(jié)果,調(diào)用者有責任確保str1數(shù)組空間足夠大,以便在其尾部添加str2后,不會覆蓋其他數(shù)據(jù)空間。
當前題目:函數(shù)返回字符串數(shù)組c語言,c++返回字符串數(shù)組
分享路徑:http://chinadenli.net/article18/dsgdcdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、關(guān)鍵詞優(yōu)化、全網(wǎng)營銷推廣、企業(yè)建站、微信小程序、標簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)