c區域性變數求助

時間 2022-05-03 10:00:06

1樓:80晴天

用函式返回值來傳遞動態記憶體這種方法雖然好用,但是常常有人把return 語句用錯

了。這裡強調不要用return 語句返回指向「棧記憶體」的指標,因為該記憶體在函式結束時

自動消亡,如下例:

char *getstring(void)void test4(void)

解決方法兩種:

1函式返回值來傳遞動態

記憶體函式返回值來傳遞動態記憶體:

char *getmemory3(int num)void test3(void)

2指向指標的指標:

void getmemory2(char **p, int num)void test2(void)

這兩種方法都可以,你可以試一下。

2樓:匿名使用者

對,因為p是區域性變數,函式結束後就銷燬了,改這樣就行了#include

char *getmemory(char* p)int main()

3樓:匿名使用者

錯誤1:你要回顯的字串是在函式中定義的,而函式在呼叫完後,是會被釋放記憶體的,也就是說 "hello word" 是會被破壞的。

錯誤2:不知道錯誤,我把main函式全刪除了,**重新敲進去,並把字串放main函式中:

#include

char *getmemory(char *p)int main()

編譯執行,完全沒問題

4樓:炫心吾動之夜愛

你的錯誤在15行,我看了程式還不到15行,說明15行中的非法字元,但卻沒有顯示,你將游標移到15行後,刪除這一個,試試再說吧。另外你的程式中我認為有幾處是沒用的,給你改進了一下,你覺得如何?

#include

char *getmemory()

main()//int可以省略

5樓:

確實因為p是區域性變數

當函式呼叫、執行結束後,它所申請的資源將被釋放掉,返回的指標就不能指向期望的內容。

如果p是全域性變數,並在開始就初始化,就不會存在問題。

6樓:龍戰於淵

#include

char *getmemory(void)int main()

這樣就可以了~用指標指向動態分配的記憶體,不要用陣列

7樓:薔懋

應該是的

這樣應該可以

#include

char s="hello word";

char *getmemory(void)int main()

8樓:匿名使用者

char *getmemory(void)

這是什麼東西,沒有引數就直接寫括號,別做多餘的動作。

9樓:匿名使用者

定義為二級指標可以解決這個問題~

10樓:匿名使用者

函式返回的是陣列的首地址

而你要列印出一個字串

所以出問題

成員變數和區域性變數區別,Java中,成員變數和區域性變數的區別是什麼?

樓主是否對類的概念已經清楚了?如果是的話,就很好解釋了。成員變數是類的一個組成部分,和類的方法處於同一級別 而區域性變數是為了讓方法 功能正常執行設立的一些臨時儲存單元,是專門服務於方法的。從概念上說,兩者是完全沒有關係的,但從應用上說,成員變數可能臨時做為區域性變數存在,而區域性變數也可能依賴或者...

C語言中,全域性變數與區域性變數同名時,以哪個為準

秋涵佴煊 在區域性變數的作用域內時,當做區域性變數,否則當作全域性變數 在定義區域性變數所在的範圍內,以區域性變數為準,否則就是全域性變數了 亓官學岺闢子 全域性變數是使用相同的記憶體塊在整個類中儲存一個值.全域性變數的存在主要有以下一些原因 1,使用全域性變數會佔用更多的記憶體 因為其生命期長 不...

axure 8 0怎麼設定區域性變數

站著的氣球 區域性變數local variable 預設顯示名稱lvar1,lvar2 作用範圍為一個case裡面的一個事務,一個事件裡面有多個case,一個case裡面有多個事務,可見區域性變數的作用範圍非常小。例如在case裡面要設定一個條件的話,如果用到了區域性變數,這個變數只在這個條件語句裡...