c語言返回字元
① c語言中函數如何返回字元串
別聽 樓上 的 瞎說, 也 別 網路 了, 都是 錯 的, 我 告訴 你 正確 答案
函數 中 的 字元 串 在 函數 結束 的 時候 會 自動 被 釋放 掉, 所以 即使 返回 char* 指向 的
也 就是 原 函數 字元串 的 地址, 訪問 的 是 一個 系統 沒有 分配 給 程序 的 內存, 雖然 編譯器 不會 報錯, 但 語法 絕對 是 錯誤 的,而且 你 不一定 能 得到 一個 正確 的 結果
三種 解決 方法:
1, struct ret { char a[100]; }; 返回 一個 結構, 結構裡面 包含 字元串
2, char* ret = (char *)malloc(100 * sizeof (char)); 在 函數 里 開 一個 動態 的 字元串, 這個 可以 返回, 不過 動態 內存 需要 手動 free 掉
3, 這個 不是 c語言 了, 調用 c++ 裡面 的 string 類型, 也是 最簡單 的 辦法, 省心, 安全
② C語言如何返回字元串
new 是動態分配(在堆上分配),你向系統要了 50 B 的內存,如
char* str=new char[50]; // 50 * 1B
堆上分配就是這情況,你不釋放(delete一下),它就認為你在用著;不會再給別人用
如果給你的你不用了,或是你把它給忘記了,那就算是內存泄露了、
當然,你程序退出的時候,系統會替你回收、不過這樣的習慣不好,你想,如果你寫了死循環(操作系統、伺服器程序等)、那裡面不斷滴在內存泄露,你就危險了、後來發現,不知不覺,內存怎麼就不夠用了,明明自己用的不多啊、、
修改一下:
char* fanhui()
{
static char str[100]; // 局部變數,靜態局部變數,它在第一次調用的時候分配,
cin >> str; // 函數返回了,str的空間還是存在的,也就是不會重復申請、
return str; // 而且,函數外面通過,指針也是可以訪問他們的、、
}
而
char* fanhui()
{
char str[100]; // 局部變數,默認動態局部變數,它在每一次調用的時候分配,
cin >> str; // 函數返回了,str的空間也就不存在了,他是在,棧,上分配的、
return str; // 函數外面通過,指針想訪問?、非法!!!人都不在了,你喊他幹嘛啊??
}
③ C語言系列之C語言如何返回字元串數組
C語言實現返回一個字元串數組,是沒有這種功能的,但是可以用指向數組的指針來實現:
解釋:
char **p 這個p就是指向數組的指針,它指向一個數組的起始地址.
想要引用裡面的數組時,直接使用p[i] 即可。
我們知道C語言裡面的各種數組,本質上都是指針,並且函數其實也是不能把數組當作參數的,實際上都是把數組的地址傳進去了,實際上就是指向數組地址的指針。
實現
這樣返回的P就是指向數組的指針了,實際上就是一個字元串數組
函數解釋:
函數返回一個字元串數組,實際上就是指向數組的指針,傳進去的是返回的數組的大小以及一個字元串數組,用來處理數據用。
④ 在C語言中,返回一個字元串的函數應該怎樣定義
要返抄回字元串 需要返回襲char*類型
需要注意的是 返回的字元串 不能是該函數的局部變數,否則會導致出錯
可以是參數字元串,全局變數,靜態局部變數,或者動態分配的內存
比如
char*my_str_cpy(char*d,char*s)
{
char*p=d;
while(*p++=*s++);
returnd;//返回參數字元串。
}
⑤ c語言怎麼返回字元串數組
C語言返回值不支持返回數組,不過可以通過返回指針類型,用以替代數組專。在C語言中,數組大多數時屬候是可以用指針替代的。
不過需要注意的是,不能夠返回在函數內部定義的局部變數數組,因為一旦函數退出,局部變數就會被釋放,導致數組指針無效。
可以返回以下幾種:
1 全局變數,或者全局變數空間內的一個地址。
2 靜態局部變數,或者靜態局部變數內部的一個地址。
3 從參數傳入的數組/指針變數,或者在其上做的合法偏移。
4 在數組內部動態申請的空間首地址。
⑥ c語言函數返回字元串
在time1()函數里,char now[]是個在函抄數里聲明的臨時變數
函數返回 char * p之後 ,char now[]的空間就已經釋放掉了
如果你想返回時間字元串
把char now[80]; 改成 char *now =(char *)malloc(sizeof(char)*80);
用malloc函數申請空間,函數返回之後空間就不會被釋放掉了
VC++ 6.0編譯通過
⑦ C語言函數如何返回字元串
1 char*formatTime(time_t t) ,函數類型定義為指向字元串的指針,你返回str就行
2 如果你在主函數中定義str的話,再把他傳給被調用函數,這樣被調用函數改變了str的值後,在主函數那邊即可輸出,被調用函數不需要返回任何值更省事
⑧ C語言里怎麼接收一個返回的字元串 先謝謝........
char *fun(char *a, int len, char c)//函數功能返回字元串a中第一個以字元c開頭的字串
{
int i;
char *p=a;
for(i=0;i<len;i++)
{
if(*p==c)
{
break;
}
p++;
}
if(i==len)
{
printf("沒有匹配!\n");
return null;
}
else
{
return p;
}
}
int main()
{
char s[10]="abcdefghi";
char in;
char *p;
printf("輸入你要匹配的字元:");
scanf("%c", &in);
p=fun(s, 10, in);
printf("result:%s",p);
return 0;
}
⑨ c語言如何接收返回字元串
C語言不能返回字元串,你只能給函數一個字元數組的參數,用參數來返回
void
foo(char
*str,int
n)
{
str[0]
=
'a';
str[1]
=
'b';
str[2]
=
'c';
}
int
main()
{
char
c[255]
=
{'\0'};
foo(c,255);
printf("%s\n",c);
}
函數參數里的n是用於判斷這個字元串長度,以防越界操作