台灣最大程式設計社群網站
線上人數
1425
 
會員總數:246054
討論主題:189637
歡迎您免費加入會員
討論區列表 >> C/C++ >> char*指標指向值,卻還是NULL的問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
char*指標指向值,卻還是NULL的問題
價值 : 50 QP  點閱數:155 回應數:3
樓主

HAIYAO
門外漢
0 1
8 1
發送站內信

各位大大好,
剛學習c++不久,對指標還是不太理解,想請問以下狀況,answer1 為什麼還是指到NULL ,而answer2確有值

char* test ( char* str) {

char* data = (char*)malloc(5);
strcpy(data, "test");
str = data;
return data;

}

int main (int argc, char** argv) {


char* answer1 = NULL;
char* answer2 = NULL;

answer1 = test(answer2);

printf("answer1 = %s\n", answer1);
printf("answer2 = %s\n", answer2);
printf("end\n");
}

結果:
answer1 = test
answer2 = (null)
end



搜尋相關Tags的文章: [ 指標 ] , [ c++ ] , [ c ] ,
本篇文章發表於2020-07-17 14:56
1樓
回應

P陳
檢舉此回應
1.
你題目 ,answer1 為什麼還是指到NULL ,而answer2確有值
與 結果不一致
結果:
answer1 = test
answer2 = (null)
end

2.(已知您的問題點了)
但請您想一下 answer2 為什麼要會有值?


本篇文章回覆於2020-07-24 15:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

HAIYAO
檢舉此回應
感謝回復,不好意思,題目打反了,應該是 answer2 為什麼還是指到NULL ,而answer1確有值。

因為我覺得 answer2 這個指標變數應該等於test()中的str,所以當str指向data時,answer2應該也要有值,但從結果來看,兩個是不一樣的,所以我不太懂為什麼不太一樣?
本篇文章回覆於2020-07-24 16:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

P陳
檢舉此回應
A=100
b=100

A=SumValue(b)
算完後
A=C+100=200
B=100 因為B沒有被動到

function sumvalue(C)
C=C+100
return C
End function

A=SumValue(b)
算完後
A=C+100=200
B才會是200 (因為以位罝參照 C=B)

function sumvalue(Byref C)
C=C+100
return C
End function
--------------------------
還不清楚的話請 GOOGLE Byref 與 Byval 的差別





本篇文章回覆於2020-07-24 20:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.