下列程式為什麼沒正確的輸出值?

2025-02-26 21:05:14 字數 1092 閱讀 2949

1樓:柒零

在getmemory函式中初始化的變數為自動變數 其生存週期為該函式本身 當該函式執行完畢 則系統釋放其記憶體 所以由main呼叫getmemory返回的位址其實是指向乙個已經被釋放了的空間 所以會顯示亂碼。

除非像向一樓所說的宣告為靜態 、全域性變數 或者動態分配記憶體 比如malloc 、new

2樓:網友

函式getmemory()返回的是個指標(位址),這個指標指向你在函式getmemory()裡申請的p指標指向的記憶體空間,這個空間的作用域是getmemory函式,在getmemory()執行結束後就會被自動銷燬,所以你在main裡面用str去接收的這個指標,實際上它所指向的記憶體空間已經被釋放了,因此你str得不到正確結果。要想得到正確結果,應該在main中申請乙個空間,然後往getmemory函式中傳入該空間的位址,然後在getmemory函式中直接賦值就行了。

3樓:網友

函式getmemory返回之後,p被釋放。所以沒有返回。可以這麼定義static char p hello world";

下面程式執行後輸出結果錯誤的是(  )

4樓:大沈他次蘋

d解析] a中控制的迴圈條件是 s ≤10,但每次迴圈先將計數變數 i 賦值 i = i +1,後給 s 賦值 s = s + i .從而迴圈結束後, s =2+3+4+5=14,最後輸出 s =14.

b中控制迴圈的變數 i 從1變到10,每次迴圈,迴圈變數sum=sum+ i ,迴圈結束sum=1+2+3+…+10=55,並將其輸出.

c中控制迴圈的計數變數 i 從1變到10,但在每次迴圈中先給 i 賦值 i = i +1,然後才賦值sum=sum+ i ,故迴圈結束時,sum=2+3+4+…+11=65,最後輸出sum.

d中控制迴圈的條件是 s ≤10,第一次( i =1)迴圈後, s =0+1=1,第二次( i =2)迴圈後, s =1+2=3,第三次( i =3)迴圈後, s =3+3=6,第四次( i =4)迴圈後, s =6+4=10仍滿足條件 s ≤10,故再執行第五次( i =5)迴圈, s =10+5=15,最後輸出 s =15.故選d.

程式設計序,輸入實數x的值,按下列公式計算並輸出y值

include double fun double x for test int main c語言程式設計 輸入x的值,按下面公式計算並輸出y的值 輸出資料佔8列,精確到0.001 include include int main void return 0 include include int ...

下列離子方程式中,正確的是

a錯,鐵和稀硫酸反應生成2價鐵離子 b應該是碳酸氫鈉溶液與稀流酸混合吧?是的話就對了。c錯,因為硫酸銅可以拆開。d也錯,硝酸銀也可以拆。所以最終答案是b。a中應生成二價鐵 b對c中cuso4可以電離,不要寫在一起 d中agno3也應分開寫 a明顯錯 b不知道是不是你的二氧化碳沒加氣體符號 c硫酸銅是...

下列化學方程式或離子方程式書寫正確的是A溴乙烷

a.溴乙烷在抄一定條件下生成乙烯襲 ch3 ch2brnaoh醇溶液 ch2 ch2 hbr,故a錯誤 b.苯酚鈉溶液中通入少量co2氣體的離子反應為,故b正確 c.大理石與醋酸反應的離子反應為caco3 2hac ca2 2ac co2 h2o,故c錯誤 d.氯化鈣溶液中通入co2氣體不反應,則不...