雷火电竞-中国电竞赛事及体育赛事平台

歡迎來(lái)到入門教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

C語(yǔ)言實(shí)現(xiàn)返回字符串函數(shù)的四種方法

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊:

前言

C語(yǔ)言返回字符串函數(shù)共有四種方式,分別如下:

  1.       使用堆空間,返回申請(qǐng)的堆地址,注意釋放
  2.       函數(shù)參數(shù)傳遞指針,返回該指針
  3.       返回函數(shù)內(nèi)定義的靜態(tài)變量(共享)
  4.       返回全局變量

下面來(lái)看看詳細(xì)的介紹

其實(shí)就是要返回一個(gè)有效的指針,尾部變量退出后就無(wú)效了。

使用分配的內(nèi)存,地址是有效

char *fun() 
{ 
  char* s = (char*)calloc(100, sizeof(char*) ); 
  if (s) 
    strcpy ( s , "abc " ); 
  return s; 
} 

但這種方式需要注意,必須由使用將將返回的地址free掉

將地址由入?yún)魅?

char* fun(char*s) 
{ 
  if (s) 
    strcpy(s, "abc "); 
  return s; 
} 

這種方式調(diào)用都要注意給s分配的大小是足夠。

可以這樣:

char* fun(char*s, int len) 
{ 
  if (s) 
  { 
    strncpy(s, "abc ", len-1); 
    s[len-1] = 0; 
  } 
  return s; 
} 

或才使用局部靜態(tài)變量

char* fun() 
{ 
  static char s[100]; 
  strcpy(s, "abc "); 
  return s; 
} 

這種方式需要注意,不要修改返回的這個(gè)字符串,由于是共享地址,對(duì)它的修改會(huì)反應(yīng)到每個(gè)調(diào)用者的??梢赃@樣:

const char* fun() 
{ 
  static char s[100]; 
  strcpy(s, "abc "); 
  return s; 
} 

還有一種是使用全局變量

char g_s[100]; 
char* fun() 
{ 
  strcpy(g_s, "abc "); 
  return s; 
} 

同樣的,也要注意這個(gè)變量可存儲(chǔ)的最大空間。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用C語(yǔ)言能有所幫助,如果有疑問(wèn)大家可以留言交流。

上一篇:C++ 簡(jiǎn)單的任務(wù)隊(duì)列詳解

欄    目:C語(yǔ)言

下一篇:stringstream操縱string的方法總結(jié)

本文標(biāo)題:C語(yǔ)言實(shí)現(xiàn)返回字符串函數(shù)的四種方法

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/1928.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有