[問題] 函式與全域指標變數

看板C_and_CPP (C/C++)作者 (滾阿滾阿~)時間16年前 (2010/06/03 17:04), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串1/1
開發平台為 Visual Studio 2005 語言為c++ 遇到了一個我不知道該怎麼解釋的情況 請各位大大指點指點 以下為程式碼: #include <iostream> using namespace std; char* aaa; void bb(){ char dd[1]; char* dd_P=dd; dd_P[0]='C'; aaa=dd_P; //cout<<" 0::"<<aaa[0]; } void main(){ bb(); cout<<" 1::"<<aaa[0]; cout<<" 2::"<<aaa[0]; cout<<" 3::"<<aaa[0]; system("pause"); } 若紅色那行不註解掉 則輸出為 0::C 1::C 2::C 3::C 若註解掉 則輸出為 1::C 2:: (亦即值後來會消失) 問題一、請問為何會發生這種現象(註解與不註解那行的差異性)呢? 問題二、在註解掉的情況下 若我想要強制讓值不消失 該怎麼處理會比較好 比較漂亮? 先感謝回應的大大了 <(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.165.54.207 ※ 編輯: Magic0325 來自: 218.165.54.207 (06/03 17:05)

06/03 17:06, , 1F
這....犯了十誡
06/03 17:06, 1F

06/03 17:08, , 2F
你不該讓aaa指向dd的空間
06/03 17:08, 2F

06/03 17:13, , 3F
因為dd是一個區域變數 離開後就消失 吧
06/03 17:13, 3F

06/03 17:14, , 4F
加static就沒這問題了
06/03 17:14, 4F
文章代碼(AID): #1C1t0EgX (C_and_CPP)
文章代碼(AID): #1C1t0EgX (C_and_CPP)